Hibernate的几个概念
Hibernate中几个常用的概念
1、SessionFactory(org.hibernate.SessionFactory):一个线程安全的Session工厂类,能为不同的线程生成不同的Session。SessionFactory维护着Session相关的资源,包括数据库连接池、缓存数据等
2、Session(org.hibernate.Session):Session代表用户的一次操作。Session的生命周期很短,在操作开始时通过执行SessionFactory.openSession()产生,在操作结束时通过执行session.close()关闭。Session维护着相关的资源,包括Transaction、当前数据库连接等
3、Transaction(org.hibernate.Transaction):Transaction代表一次事务,事务内包含若干的数据库修改,事务提交后才生效。如果事务失败或者回滚,所有的修改都会失效。Hibernate的事务不同于数据库的事务。Hibernate可能使用各种机制保证事务性,包括JTA、第三方事务管理、数据库事务等。
可持久化对象的状态
1、临时状态(Transient):对象在保存进数据库之前为临时状态。这时候数据库中没有该对象的信息,该对象的Id属性也为空。如果没有被持久化,程序退出时临时状态的对象信息将会丢失。
2、持久化状态(Persistent):对象在保存进数据库后或者从数据库中加载后、并且没有脱离Session时为持久化状态。这时候数据库中有该对象的信息,该对象的id为数据库中对应记录的主键值。由于Session中,持久化状态的对象可以执行任何有关数据库的操作,例如获取集合属性的值等。
3、分离状态(Detached):分离状态是对象曾经处于持久化状态、但是现在已经离开Session了。虽然分离状态的对象有id值,有对应的数据库记录,但是已经无法执行有关数据库的操作。例如,读取延迟加载的集合属性,可能会抛出LazyInitializaException。