zoukankan      html  css  js  c++  java
  • Hibernate 体系结构简述

    1. SessionFactory: Hibernate的关键对象,它是单个数据库映射关系经过编译后的内存镜像,同时它是线程安全的。它是生成Session的工厂,本身需要依赖于ConnectionProvider。该对象可以在进程或集群级别上,为那些事务之间可以重用的数据提供二级缓存。
    2. Session:它是应用程序与持久层之间交互操作的一个单线程对象。他也是Hibernate持久化操作的关键对象,所有的持久化对象必须在Session管理下才可以进行持久化操作。此对象生命周期很短。它底层封装了JDBC连接,它也是Transaction的工厂。Session对象持有一个比选的一级缓存,显示执行flush之前,所有持久化操作的数据都在缓存中Session对象处。
    3. 持久化对象:系统创建的POJO实例(简单的Java类,即JavaBean),一旦与特定的Session关联,并对应数据表中的指定记录,该对象就处于持久化状态,这一系列对象都称为持久化对象。在程序中对持久化对象执行的修改,都将自动转换为持久层的修改。持久化对象完全可以是普通的JavaBeans/POJO,唯一的特使是它们正在与一个Session关联。
    4. 瞬态对象和托管对象:系统通过new关键字创建的Java实例,没有与Session关联,此时处于瞬态。瞬态实例可能是在被应用程序实例化后,尚未进行持久化的对象。如果一个曾经持久化过的实例,但因Session的关闭则转换为托管状态。
    5. 事务(Transaction):代表一次原子操作,他具有数据库事务的概念。Hibernate事务是对底层具体的JDBC、JTA以及CORBA事务的抽象。在某些情况下,一个Session之内可能包含多个Transaction对象。虽然事务操作是可选的,但所有持久化操作都应该在事务管理下进行,即使只是读操作。
    6. 连接提供者(ConnectionProvider):它是生产JDBC连接的工厂,它通过抽象将应用程序与底层的DataSource和DriverManager隔离开。这个对象无须应用程序的直接访问,只在应用程序需要扩展时使用。
    7. 事务工厂(TransactionFactory):它是生成Transaction对象实例的工厂。该对象也无需应用程序的直接访问。他负责对底层的具体事务实现进行封装、将底层的具体事务抽象成Hibernate事务。
  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/hgfrzh/p/3412547.html
Copyright © 2011-2022 走看看