Hibernate-----3、Hibernate的体系结构



SessionFactory:是单个数据库映射关系经过编译后的内存镜像,他是线程安全的。是生成Session的工厂,本身需依赖于ConnectionProvider。该对象可在进程或集群的级别上,为那些事物之间可重用的数据提供可选的二级缓存

Session:是应用程序与持久存储层之间交互操作的一个单线程对象。所有的持久化对象必须在Session管理下才可进行持久化操作。其生存期很短。它底层封装了JDBC连接,他也是Transaction的工厂、Session对象持有一个必选的一级缓存,显式执行flush之前,所有持久化操作的数据都缓存在Session对象中

Transaction:代表一次原子操作,它具有数据库事务的概念。Hiberante事务是对底层具体的JDBC、JTA以及CORBA事务的抽象。在某些情况下,一个Session之内可能包含多个Transation对象;虽然事务操作可选,但所有持久化操作都应该在事务管理下进行,即使是只读操作

持久化对象:系统创建的POJO实例,一旦与特定Session关联,并对应数据表的指定记录,该就像就处于持久化转态,这一系列对象都被称为持久化对象。在程序中对持久化对象执行的修改,都将自动被转换为持久层的修改。持久化对象完成可以是普通的JavaBean/POJO,唯一特殊的是他们正与一个Session关联

瞬态对象:new创建的Java实例,没有与Session相关联(瞬态);瞬态实例可能是被应用程序实例化后,尚未进行持久化的对象;

脱管对象:曾经持久化过的实例,但因为Session的关闭则转化为托管状态

连接提供者(ConnectionProvider):生成JDBC连接的工厂,通过抽象将应用程序与地层的DataSource或DriverManager隔离开。该对象仅在应用程序需扩展时使用

事务工厂(TransactionFactory):生成Transaction对象实例的工厂。该对象无须应用程序直接访问。它负责对地层具体的事务实现进行封装、将地层具体的事务抽象成Hibernate事务

   


实际应用中很少直接使用DriverManager来获取数据库连接,通常用DataSource来获取数据库连接,因此实际应用中ConnectionProvicer通常由DataSource充当。由于SessionFactory底层封装了ConnectionProvider,因此实际应用中,SessionFactory底层封装了DataSource

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。