⊙ 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事务。

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

  1. 5 -- Hibernate的基本用法 --2 Hibernate入门

    5.2.1 Hibernate 下载和安装 5.2.2 Hibernate 的数据库操作 5.2.3 在Eclipse中使用Hibernate 啦啦啦

  2. 5 -- Hibernate的基本用法 -- 要点

    Hibernate的基本用法 ⊙ ORM的基本知识 ⊙ ORM和Hibernate的关系 ⊙ Hibernate的基本映射思想 ⊙ Hibernate入门知识 ⊙ 使用Eclipse开发Hiberna ...

  3. hibernate的like用法(用占位符解决)

    原本我的写法:Query repeatClientQuery=querysession.createQuery("from ClientInfo as a " +"whe ...

  4. JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-007UserTypes的用法(@org.hibernate.annotations.Type、@org.hibernate.annotations.TypeDefs、CompositeUserType、DynamicParameterizedType、、、)

    一.结构 二.Hibernate支持的UserTypes接口  UserType —You can transform values by interacting with the plain JD ...

  5. 轻量级Java_EE企业应用实战-第5章Hibernate的基本用法-001

    1. package org.crazyit.app.domain; import javax.persistence.*; /** * Description: <br/> * ��վ: ...

  6. Hibernate(五):Hibernate配置文件及C3P0的用法

    配置文件可配项: 参考文档:hibernate-release-5.2.9.Final/documentation/userguide/html_single/Hibernate_User_Guide ...

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

    Hibernate其他常用的配置属性: ⊙ hibernate.show_sql : 是否在控制台输出Hibernate持久化操作底层所使用的SQL语句.只能为true和false两个值. ⊙ hib ...

  8. 5 -- Hibernate的基本用法 --4 6 Hibernate事务属性

    事务也是Hibernate持久层访问的重要方面,Hibernate不仅提供了局部事务支持,也允许使用容器管理的全局事务. Hibernate关于事务管理的属性: ⊙ hibernate.transac ...

  9. 5 -- Hibernate的基本用法 --4 3 JDBC连接属性

    Hibernate需要进行数据库访问,因此必须设置连接数据库的相关属性.所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义. 关于JDBC连接配 ...

随机推荐

  1. Pycharm新建文件时自动添加基础信息

    位置:File->settings->Editor->File and Code Templates->Python Script 添加以下代码: #!/usr/bin/env ...

  2. Jvm中时区设置方式

    Jvm中时区设置方式2018年08月08日 08:19:31 liumiaocn 阅读数:156更多个人分类: 编程语言版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处. https: ...

  3. R语言中的factor

    对于初学者来说,R语言中的factor有些难以理解.如果直译factor为“因子”,使得其更加难以理解.我倾向于不要翻译,就称其为factor,然后从几个例子中理解: <span style=& ...

  4. What Great .NET Developers Ought To Know (More .NET Interview Questions)

    A while back, I posted a list of ASP.NET Interview Questions. Conventional wisdom was split, with ab ...

  5. I/O多路复用和Socket

    由于IO操作涉及到系统调用,涉及到用户空间和内核空间的切换,所以理解系统的IO模型,对于需要进入到系统调用层面进行编程来说是很重要的. 阻塞IO和非阻塞IO 从程序编写的角度来看,I/O就是调用一个或 ...

  6. 总结这两天连续干掉的bug In 创新实训 智能自然语言交流系

    临近项目合并,在pre合并中出现相当多的hug,遂记之 ps:这只是总结一下提纲,具体的方法在前文的博文中都详细记录.总结了. 平台的移植兼容性,虽然是跨平台的java,但是依旧有很多的意外: 1.从 ...

  7. c++ 的类 和 类继承, 什么是c++中的基类和派生类?

    闲云潭影日悠悠,物换星移几度秋 你既然已经做出了选择, 又何必去问为什么选择.鬼谷绝学的要义, 从来都不是回答, 而是抉与择 普通类 #ifndef TABTENN0_H_ #define TABTE ...

  8. 了解VIM的寄存器

    VIM下的删除:delete; 复制:yank; 粘帖:put; 都会用到VIM下的相关寄存器,今天就说说这个寄存器的问题: VIM中有多种寄存器:包括: 有名寄存器,用名字("a-&quo ...

  9. Linux命令_磁盘管理_查看磁盘或目录的容量

    软件环境:虚拟机VM12,Linux版本 CentOS 7.3 命令 df (disk filesystem) 用于查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认以KB为单位显示 ...

  10. asp 读文件 比较ip

    <% Dim UserIPAddress Set UserIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR" ...