5 -- Hibernate的基本用法 --3 Hibernate的体系结构

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

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

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

  ⊙ 瞬态对象和脱管对象 : 系统通过new关键字创建的Java实例,没有与Session相关联,此时处于瞬态。瞬态实例可能是在被应用程序实例化后,尚未进行持久化的对象。如果一个曾经持久化过的实例,如果Session被关闭则转换为脱管状态。

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

  ⊙ 连接提供者(ConnectionProvider) : 它是生成JDBC连接的工厂,它通过抽象将应用程序与底层的DataSource或DriverManager隔离开。这个对象无须应用程序直接访问,仅在应用程序需要扩展时使用。

  提示:

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

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

时间: 2024-10-27 07:20:23

5 -- Hibernate的基本用法 --3 Hibernate的体系结构的相关文章

5 -- Hibernate的基本用法 --4 9 其他常用的配置属性

Hibernate其他常用的配置属性: ⊙ hibernate.show_sql : 是否在控制台输出Hibernate持久化操作底层所使用的SQL语句.只能为true和false两个值. ⊙ hibernate.format_sql : 是否将SQL语句转成格式良好的SQL.只接受true和false两个值. ⊙ hibernate.use_sql_comments : 是否在Hibernate生成的SQL语句中添加有助于调试的注释.只接受true和false值. ⊙ hibernate.jd

5 -- Hibernate的基本用法 --4 1 创建Configuration对象

org.hibernate.cfg.Configuration实例代表了应用程序到SQL数据库的配置信息,Configuration对象提供了一个buildSessionFactory()方法,该方法可以产生一个不可变的SessionFactory对象. 另外,先实例化Configuration实例,然后在添加Hiberante持久化类.Configuration对象可调用addAnnotatedClass()方法逐个地添加持久化类,也可调用addPackage()方法添加指定包下的所有持久化类

hibernate 基本简单用法

首先是hibernate.cfg.xml配置,该文件放在src目录下 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> &l

粗谈Hibernate——从执行顺序来看Hibernate

1.实例化Configuration对象 Hibernate在WEB-INF下查找hibernate.cfg.xml配置文件,根据hibernate.cfg.xml配置文件中配置的信息实例化Configuration对象 .如果使用了事件系统的话,在实例化Configuration对象后还应对事件监听器进行注册.这里值得一提的是配置的问题.一般为每个持久化类配置一个映射文件,其中包括基本映射和关系映射.在hibernate.cfg.xml中,使用<session-factory />元素下的&

hibernate 大对象类型的hibernate映射

基本知识: 在 Java 中, java.lang.String 可用于表示长字符串(长度超过 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据. 此外, 在 JDBC API 中还提供了 java.sql.Clob 和 java.sql.Blob 类型, 它们分别和标准 SQL 中的 CLOB 和 BLOB 类型对应. CLOB 表示字符串大对象(Character Large Object), BLOB表示二进制对象(Binary Large Object) Mysql

Hibernate笔记①--myeclipse制动配置hibernate

Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任. Hibernate笔记①--myeclipse制动配置hibernate

Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties   <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hiber

攻城狮在路上(壹) Hibernate(七)--- 通过Hibernate操纵对象(下)

一.与触发器协同工作: 当Hibernate与数据库的触发器协同工作时,会出现以下两类问题: 1.触发器使Session缓存中的数据和数据库中的不一致: 出现此问题的原因是触发器运行在数据库内,它执行的操作对Session是透明的. 解决方案:在执行完包含有触发器的操作之后,立刻调用Session的flush()和refresh()方法,迫使Session的缓存与数据库同步. 2.Session的update()方法盲目的激发触发器: 这种情况主要发生在Session调用update()或sav

hibernate学习笔记02-- eclipse 下 hibernate+mysql 的实现。

hibernate 环境的配置步骤: 加入 hibernate 所需的 jar 包,并将这些 jar 添加到 project 中,如图: hibernate.cfg.xml 的建立.hibernate 的 hibernate.cfg.xml 配置文件默认在 project/src 目录下,如图: hibernate.cfg.xml 中的内容如下(当然,这是从 hibernate 的参考文档中拷贝过来的,还未修改): <?xml version='1.0' encoding='utf-8'?>