本文主要是介绍Hibernate学习笔记一——SessionFactory、Session,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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();
这篇关于Hibernate学习笔记一——SessionFactory、Session的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!