SqlSession和SqlSessionFactory「建议收藏」

SqlSession和SqlSessionFactory「建议收藏」SqlSessionFactoryBuilder  这个类可以被实例化、使用和丢弃,一旦创建了SqlSessionFactory,就不再需要它了。因此SqlSessionFactoryBuilder实例的最佳范围是方法范围(也就是局部方法变量)。你可以重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例,但是最好还是不要让其一…

大家好,又见面了,我是你们的朋友全栈君。

 

SqlSessionFactoryBuilder

  这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是局部方法变量)。你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情。

SqlSessionFactory

  SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。因此  SqlSessionFactory 的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

SqlSession

  每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的范围是请求或方法范围。绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。也绝不能将 SqlSession 实例的引用放在任何类型的管理范围中,比如 Serlvet 架构中的 HttpSession。如果你现在正在使用一种 Web 框架,要考虑 SqlSession 放在一个和 HTTP 请求对象相似的范围中。换句话说,每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。这个关闭操作是很重要的,你应该把这个关闭操作放到 finally 块中以确保每次都能执行关闭。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132539.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月30日 下午11:00
下一篇 2022年4月30日 下午11:20


相关推荐

  • 一阶惯性滤波特点_一阶惯性环节仿真

    一阶惯性滤波特点_一阶惯性环节仿真由文章(二)可知,二次平均法改善了一次平均法滤除低频干扰时超调的影响,但仍然未能完全滤除低频干扰。因此,通过改变反馈控制系统参数结合平均法是一个不错的选择,仿真如图:通过改变比例系数,可以实现一定的滤波效果,此方法是通过降低响应参数的方式实现一级滤波,通过平均法实现二级滤波,仿真结果如下图:文章《一阶惯性传感器的快速跟踪性能实现》中,最终传递函数为:本例中,传递函数为启动性能与文章《一阶惯性传感器的快速跟踪性能实现》中接近,且较大地滤除了高频、低频干扰可见,该控制

    2022年10月4日
    5
  • 高数复习:极限与连续,一元函数微分学,一元函数积分学,多元函数微分学以及微分方程(思维导图版知识点总结)

    高数复习:极限与连续,一元函数微分学,一元函数积分学,多元函数微分学以及微分方程(思维导图版知识点总结)最近学最优化 涉及许多高数的知识 顺便复习一下 下面是我考研复习数学的时候做的微积分知识点思维导图 也和大家分享一下 内容包括极限与连续 一元函数微分学 一元函数积分学 多元函数微分学以及微分方程极限与连续一元函数微分学一元函数积分学多元函数微分学微分方程

    2026年3月18日
    2
  • Lua文件加密

    Lua文件加密项目要求对 lua 脚本进行加密 查了一下相关的资料 得知 lua 本身可以使用 luac 将脚本编译为字节码 bytecode 从而实现加密 试了一下 确实可行 下面是使用原生的 lua 解释器编译字节码 1 新建一个名为 1 lua 的文件 里面只有一句话 print HelloLua 新建一个空的 out lua 脚本文件 2 开始运行 cmd3 luac oout lua1 lu

    2026年3月18日
    2
  • platform_driver_probe与platform_driver_register的区别[通俗易懂]

    platform_driver_probe与platform_driver_register的区别[通俗易懂]

    PlatformDeviceandDrivers
    我们可以了解Platformbus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线Platformbus使用最小结构来集成SOCprocesser上的各种外设,或者各种“legacy”之间的互联。
    Platformdevice
    典型的Platformdevi

    2022年7月14日
    20
  • 关于OpenClaw,你需要了解的:核心架构、运作原理、Agent部署步骤、精细化管控和安全风险

    关于OpenClaw,你需要了解的:核心架构、运作原理、Agent部署步骤、精细化管控和安全风险

    2026年3月13日
    1
  • python数组初始化_python怎么初始化数组

    python数组初始化_python怎么初始化数组因为画图中 x 轴与 y 轴的数据通常为数组格式的数据 所以先总结一下如何初始化数组 1 list 得到数组 通过 array 函数传递 list 对象 L 1 2 3 4 5 6 a np array L 若传递的是多层嵌套的 list 将创建多维数组 b np array 1 2 3 4 5 6 7 8 9 10 11 12 可以通过 dtype

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号