Hibernate对象

1)SessionFactory数据库

这是Hibernate的关键对象,它是单个数据库映射关系通过编译后的内存镜像,它也是线程安全的。它是生成Session的工厂,自己须要依赖于ConnectionProvider,该对象能够在进程或集群的级别上,为那些事务之间能够重用的数据提供可选的二级缓存。缓存

2)Session安全

它是应用程序和持久层之间交互操做的一个单线程对象。它也是Hibernate持久化操做的关键对象,全部的持久化对象必须在Session的管理下才能够进行持久化操做,该对象生存周期很短。它底层封装了JDBC连接,它也是Transaction的工厂。Session对象持有一个必选的一级缓存,显式执行flush以前,全部持久化操做的数据都在缓存中Session对象处。ide

3)持久化对象线程

也就是咱们常说的POJO,一旦与特定的Session关联,并对应数据表的指定记录,该对象就处于持久化状态,这一系列对象都被称为持久化对象。在程序中对持久化对象执行的修改,都将自动被转换为持久层的修改。持久化对象彻底能够是普通的JavaBean/POJO,惟一特殊的是它们正与一个Session关联。对象

4)瞬态对象和脱管对象进程

系统经过new关键字建立的JAVA实列,没有与Session关联,此时处于瞬态。便是被应用程序实列化后,还没有进行持久化的对象。通过实列化后的实列,由于Session的关闭而转换为脱管状态。事务

将瞬态对象转换为持久化对象,Hibernate Session提供了如下几个方法:内存

Serializable save(Object obj);将obj进行持久化,该对象的属性将保存至数据库;get

void persist(Object obj);将obj进行持久化,该对象的属性将保存至数据库;

Serializable save(Object obj, Object pk);将obj对象保存至数据库,而且指定主键;

void persist(Object obj, Object pk);将obj对象保存至数据库,而且指定主键;

其中save()和persist()方法区别是,save()返回该持久化对象的标识属性值(主键值),persist()无返回值;

也能够经过load(Test.class, Object pk)来加载一个持久化实列,get()方法也相似;get()方法没有延时加载,会当即访问数据库,load()不会当即访问数据库

5)事务(Transaction)

表明一次原子操做,它具备数据库事务的概念。Hibernate事务是对底层具体的JDBC、JTA以及CORBA事务的抽象。在某些状况下,一个Session以内可能包含多个Transaction对象,虽然事务操做是可选的,但全部持久化操做都应该在事务管理下进行,即便是只读操做。

6)连接提供者(ConnectionProvider)

它是生成JDBC链接的工厂,它经过抽象将应用程序与底层的DataSource或DriverManager隔离开。这个对象无须应用程序直接访问,仅在应用程序须要扩展时使用。

7)事务工厂(TransactionFactory)

它是生成Transaction对象实列的工厂。该对象也无须应用程序直接访问。它负责对底层具体事务实现进行封装、将底层具体的事务抽象成Hibernate事务。

自李刚《经典Java EE企业应用实战》

相关文章
相关标签/搜索