第14章 Hibernate的体系结构及接口

来源:互联网 发布:matlab矩阵的共轭转置 编辑:程序博客网 时间:2024/04/19 19:27

熟悉Hibernate的体系结构



SessionFactory(org.hibernate.SessionFactory):该对象是JavaBean对象与数据库表之间的关系在内存中的镜像。一般一个数据库对应一个

SessionFactory。该对象是线程安全的,它是Session的工厂。使用它可以获得Session对象,并且它可以给事务之间可以重用的数据提供

二级缓存。


session(org.hibernate.Session):该对象表示应用程序和JavaBean对象交互操作的一个单线程对象。它是Transaction的工厂,使用它可以

获得Transaction,从而去进行事务操作。


Persistent Objects(持久化对象及其集合):该对象是与一个session对象相关联的JavaBean对象。当该session被关闭时,它们就会脱离持久

化状态,从而可以被应用程序的任何层使用。


Transient  Objects(瞬态的对象及其集合):该集合代表实例化后但还没有和任何session相关联的JavaBean对象。


事务Transaction(org.hibernate.Transaction):该对象代表对数据库最小单位的操作。它通过抽象将应用程序和最底层具体的JDBC、JTA事务隔离

开。某种情况下,一个session可以包括多个Transaction对象。使用该对象一般进行事务的开启和关闭操作。


ConnectionProvider(org.hibernate.connection.ConnectionProvider):该对象是生成JDBC连接的工厂(同时也起到连接池的作用)。它通过抽象将

应用和底层的Datasource或DriverManager隔离开。


TransactionFactory(org.hibernate.TransactionFactory):该对象用来生成Transaction对象实例的工厂。


掌握Hibernate实体对象的生命周期


瞬态(Transient)

由new操作符创建,且尚未与Hibernate Session关联的对象被认定为瞬时(Transient)的。瞬时(Transient)对象和数据库的记录没有任何联系,因而

也不会被赋予持久化标识(identifier)。在应用程序中,如果没有保持对瞬时(Transient)对象的引用,它会被垃圾回收器(garbage collector)销毁。


持久态(Persistent)

一旦一个处于瞬时状态的对象和session相关联,它就转换为持久态(Persistent)。持久的实例在数据库中有对应的记录,并拥有一个持久化标识

(identifier)。持久(Persistent)的实例可能是刚被保存(save)到数据库的,或者是刚从数据库加载(load)的。在与该session断开连接之前,Hibernate

会监测到处于持久(Persistent)状态的对象的任何改动,并且在当前操作单元(unit of work)执行完毕时将对象中的数据与数据库的相关记录同步。


游离态(Detached)

一旦与持久(Persistent)对象关联的session被关闭后,对象就变为脱管(Detached)的。在脱管期间,该对象可继续被修改。如果脱管对象被重新关联

到某个session上,会再次转变为持久的,这时在托管期间的任何改动都会被保存到数据库中。


实体对象的状态转换


使对象持久化


装载对象

装在对象一般使用如下所示的两个函数。

load(): 如果知道一个对象的标识(identifier),则就可以使用session的load()方法来获取它。load()的另一个参数是指定类的class对象。该方法会创建

指定类的持久化实例,并从数据库加载其数据。

get():使用load()方法装载某个对象,如果在数据库中该记录不存在,则会抛出一个异常。如果程序员不确定要装载的记录是否存在,可以使用get()

方法。


修改脱管对象

Session.update();

Session.merge();


使用saveOrUpdate()方法


学会使用Hibernate API


使用Configuration 类


使用SessionFactory接口


使用Session接口


使用Transaction接口


使用Criteria接口

0 0
原创粉丝点击