Hibernate学习笔记一——SessionFactory、Session

本文详细介绍了Hibernate框架中SessionFactory和Session的作用与使用方法。SessionFactory负责创建Session实例,并维护二级数据缓存和StatementPool。Session作为持久化管理器核心,提供了一系列持久化方法,如save、update、delete、get等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.SessionFactory

    SessionFactory负责创建Session实例。我们可以通过Configuation实例构建SessionFactory:

Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();

    Configuration实例config会根据当前的数据库配置信息,构造SessionFactory实例并返回。SessionFactory一旦构造完毕,即被赋予特定的配置信息。

    也就是说,之后config的任何变更将不会影响到已经创建的SessionFactory实例(SessionFactory)。如果需要使用基于改动后的config实例的SessionFactory,需要从config重新构建一个SessionFactory实例。同样,如果应用中需要访问多个数据库,那么针对每个数据库,应分别为其创建对应的SessionFactory实例。

    SessionFactory中保存了对应当前数据库配置的所有映射关系,同时也负责维护当前的二级数据缓存和Statement Pool。由此可见,SessionFactory的创建过程必然非常复杂、代价高昂,而这也就意味着,我们应该在系统设计中充分考虑到SessionFactory的重用策略。由于SessionFactory采取了线程安全的设计,可由多个线程并发调用,大多数情况下, 一恶搞应用中针对一个数据库共享一个SessionFactory实例即可

 

2.Session

    Session是Hibernate持久化操作的基础。Session作为贯穿Hibernate的持久化管理器核心,提供了众多持久化方法,如save、update、delete、get等。通过这些方法,我们即可透明的完成对象的增删改查(CRUD)。

    同时,值得注意的是,Hibernate Session的设计是非线程安全的,也就是说,一个Session实例同时只可由一个线程使用,同一个Session实例的多线程并发调用将导致难以预知的错误

    Session实例由SessionFactory构建:

Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值