Hibernate体系结构的简单介绍
1.SessionFactory:
单个数据库映射关系经过编译后的内存镜像,是线程安全的。它是生产Session的工厂,本身需要依赖于ConnectionPeovider。该对象可以在进程或者集群的级别上,为事务之间可以重用的数据提供二级缓存。
2.Session:
是应用程序与持久层之间相互操作的一个单线程对象。同时他也是Hibernate持久化操作的关键对象,所有的持久化操作对象必须在Session的管理下才能进行持久化操作。在它的底层封装了JDBC连接,他也是Transaction的工厂。Session持有必选的一级缓存,在显示执行flush前,所有的持久化操作的数据都在Session对象处。
3.持久化对象(PO):
系统创建的POJO实例,一旦与特定的Session关联,并对应数据表的指定记录,该对象就处于持久化状态,这一系列对象都被成为持久化对象。在程序中对持久化对象的修改都会自动被转化为对持久层的修改。持久化对象完全可以是一个普通的JavaBeans/POJO唯一的区别在于他们是否正与一个Session关联。
4.瞬态对象:
系统通过new关键字创建的Java实例,并未与Session关联,此时该对象处于瞬态。
5.脱管对象:
一个曾经被持久化过的实例,如果与其关联的Session被关闭,该对象则处于脱管状态。
6.事务(Transation):
代表一次原子操作,它具有数据库事务的概念。Hibernate事务是对底层具体的JDBC、JTA以及CORBA事务的抽象。某些情况下一个Session会包含许多个Transation对象。所有的持久化操作都应该在事务管理下进行。
7.连接提供者(ConnectionProvider):
生成JDBC连接的工厂,通过抽象把应用程序与底层的DriverManager或者DataSource隔离开。
8.事务工厂(TransationFactory):
生成Transation对象实例的工厂。无须应用程序直接访问。负责对底层具体事务实现进行封装,将底层的具体事务抽象成Hibernate事务。