ORM进阶之Hibernate 的三大对象

       ORM进阶之 ORM简单介绍

        ORM进阶之Hibernate 简单介绍及框架搭

        ORM进阶之Hibernate 的三大对象

        

        我们在上一篇博客中讲到了怎样搭建一个Hibernate框架, 提到Hibernate我们就不得不说他的三大对象,Configuration,SessionFactory , Session 。下边我们就分别来解释一下这三大对象!

Configuration对象

       Configuration类用来管理我们的配置文件的信息的,通过它。我们能够通过创建一个configuration实例来管理对应的配置文档,可是通常我们仅仅创建一个configuration实例。

创建过程 Configuration cfg =new Configuration().configure();   我们也能够在configure()方法中指定hbm.xml文件的路径。

SessionFactory对象

        SessionFactory 顾名思义,他是创建session的工厂。用来创建session对象,令你感到奇怪的是SessionFactory并非轻量级的。实际上它的设计者的意图是让它能在整个应用中共享。典型地来说。一个项目通常仅仅须要一个SessionFactory就够了,可是当你的项目要操作多个数据库时。那你必须为每一个数据库指定一个SessionFactory。

  

       SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自己主动生成的SQL语句和一些其他的映射数据,还缓冲了一些将来有可能反复利用的数据。  

       一个SessionFactory实例相应一个数据存储源。应用从SessionFactory中获得Session实例。SessionFactory它是线程安全的,这意味着它的同一个实例能够被应用的多个线程共享。

       SessionFactory的缓存可分为两类:内置缓存和外置缓存。

       SessionFactory的内置缓存中存放了Hibernate配置信息和映射元数据信息、同一时候也缓存了Hibernate自己主动生成的SQL语句等;

        SessionFactory的外置缓存是一个可配置的缓存插件,在默认情况下,SessionFactory不会启用这个缓存插件。

外置缓存能存放大量数据库数据的拷贝。外置缓存的物理介质能够是内存或者硬盘

Session对象

Session对象的简单介绍

       Session接口对于Hibernate   开发者来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类。创建和销毁它都不会占用非常多资源。

这在实际项目中确实非常重要,由于在客户程序中,可能会不断地创建以及销毁Session对象,假设Session的开销太大。会给系统带来不良影响。

但值得注意的是 Session对象是非线程安全的,因此在你的设计中。最好是一个线程仅仅创建一个Session对象。  

   

     在Hibernate的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。我们能够将session想象成一个持久对象的缓冲区。Hibernate能检測到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,由于它包括这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate   的session不同于JSP应用中的HttpSession。当我们使用session这个术语时,我们指的是Hibernate中的session,而我们以后会将HttpSesion对象称为用户session。

 

怎样获得Session对象

       首先创建SessionFactory对象应用server假设訪问多个数据源时,则应该产生多个SessionFactory;可是只为了服务与某个请求时,不要创建一个新的SessionFactory,由于创建SessionFactory须要消耗大量的资源.然后依据SessionFactory再创建Session对象 创建session对象有两种方式,各自是openSession()和getCurrentSession(),openSession,打开须要关闭。可是getCurrentSession 是不须要关闭的。他会自己主动的关闭!

<span style="font-size:18px;">Session session=sessionFactory.openSession();Transaction tx;
try{tx=session.beginTransaction();//開始一个事务.......//运行事务tx.commit(); 
}catch(Exceptione){//假设出现异常就撤消事务if(tx!=null)tx.rollback();throw e;
}
Finally{  //无论事务运行成功与否,最后都关闭Session而且放在finally中以提高安全性session.close();
}</span>

       我们先通过configuration 读取数据库的一系列的配置文件,然后通过这一系列的配置信息。创建一个创建数据库连接的工厂SessionFactory,然后通过SessionFactory 我们就能够拿到详细的链接的数据库的对象,对数据库进行操作!

 

转载于:https://www.cnblogs.com/lytwajue/p/7262475.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

与Java EE和Spring的集成架构

本周在纽约举行的OReilly软件体系结构大会将举行 。 我很高兴与Josh Long一起提供了有关如何集成Java EE和Spring的教程。 一段时间以来&#xff0c;我们一直在开玩笑。 某些人想到的对两种技术的超级愚蠢见解使我们俩都感到困扰了一段时间。 这次演讲的另一个重要原因是&#…

推广的euclid_欧几里德(Euclid)贴近度评价法在人类进化上的应用

文●螭母&#xff1a;1008一s688 12001)Ol一0006—03 欧几里德(Euclid)贴近度评价法在人类进化上的应用 刘国民1&#xff0c;宋香梅2 (1奉溪拜专&#xff0c;皋溪117022&#xff1b;2&#xff0e;本溪市圆税局&#xff0c;苯澳117022) 搞要&#xff1a;用F唧数学中的欧几里德贴…

HTML个人笔记

<hr/> 水平线标签 <hr style "whidth:80px"/>设置水平线宽度&#xff1b; <hr style "whidth:80%"/>居中 <hr style "whidth:80%" align "left"/>段落的80%&#xff0c;居左&#xff1b; ol>li*5tab生产5…

qt 保存绘制图片时背景变黑_QGraphicsScene绘制背景图片引起的问题

项目是基于Qt的图形视图框架编写的&#xff0c;现有个需求是要在图形中加入自定义的背景图片。心想不就是个背景图片吗&#xff1f;只要重写drawBackground函数我想怎么画就怎么画啊。于是立马从QGraphicsScene类中派生了一个CScene类&#xff0c;并重写了虚函数drawBackground…

JavaScript | JSON基本格式

————————————————————————————————————————————————————————— JSON 语法 "use strict"; // 简单值 "hello,world" // 必须使用双引号// 对象 {"name": "hugh","age&…

Linux命令大全(文件管理)

Linux命令&#xff08;文件管理命令&#xff09; 1、cat命令。用于连接文件并打印到标准输出设备上。 参数: -n 从1开始对所有的输出行数进行编号 -b 和n类似&#xff0c;只是不算空行 -s 大于等于2个空格&#xff08;连续的&#xff09;当一个空格处理 -T 将Tab字符显示…

jmeter 生成计数器_使用密码摘要生成器扩展JMeter

jmeter 生成计数器最近&#xff0c;我不得不处理一个具有50,000条用户记录的OpenLDAP实例&#xff0c;并进行一些压力测试。 JMeter是填充LDAP的最佳选择。 但是&#xff0c;在我的情况下&#xff0c;OpenLDAP配置为不接受任何明文密码。 因此&#xff0c;我无法使用通过JMet…

c++ 查找 list中最长的字符串_查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)...

查找不重复字符的最长子字符串&#xff08;编程面试中常见题-用8种编程语言来回答&#xff09;给定一个字符串str&#xff0c;找到不重复字符的最长子字符串。比如我们有 “ABDEFGABEF”, 最长的字符串是 “BDEFGA” 和 “DEFGAB”, 长度为6.再如 “BBBB” 最长字符串是 “B”,…

Spring Async和Java的8 CompletableFuture

众所周知&#xff0c;我不是Spring的最大粉丝&#xff0c;但是当时我在一个组织中工作&#xff0c;该组织使用Spring&#xff08;以不同的形式和版本&#xff09;维护了太多的项目。 我仍然对Spring持怀疑态度&#xff0c;当然有一些很好的主意&#xff0c;有一些很好的&#x…

JustOj 1032: 习题6.7 完数

题目描述 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。 例如&#xff0c;6的因子为1、2、3&#xff0c;而6123&#xff0c;因此6是"完数"。 编程序找出N之内的所有完数&#xff0c;并按下面格式输出其因子&#xff1a; 输入 N 输出 ?…

mysql 触发器 本表_MySQL触发器处理本表数据

关于MySQL的触发器&#xff0c;基本上每个Mysql教程里都有讲到&#xff0c;但是我发现那些教程里讲的都是如何处理其他表的数据。在MySQL中写触发器操作关于MySQL的触发器&#xff0c;基本上每个Mysql教程里都有讲到&#xff0c;但是我发现那些教程里讲的都是如何处理其他表的数…

JS 操作cookie

平时网站的开发中cookie用的还是用的比较多的&#xff0c;因为cookie在客户端&#xff0c;所以用js操作的比较多&#xff0c;下面是常用的设置、查找、删除等功能实现。 function addCookie(objName, objValue, objHours){//添加cookie var str objName "" esc…

官方野生蝇群流口水分数

官方是什么&#xff1f; 标题太小&#xff0c;但有用的贡献。 Wildfly Swarm允许我们创建相当小的自包含应用程序&#xff0c;包括我们从Wildfly Application Server中需要的应用程序。 在这篇文章中&#xff0c;我们将研究与Wildfly Swarm合作使用的Drools分数 。 该部分背后的…

SQL-十步完全理解 SQL

十步完全理解 SQL http://blog.jobbole.com/55086/ 刚开始看到了 执行顺序&#xff0c;写得挺好的&#xff0c;明天继续转载于:https://www.cnblogs.com/hpyg/p/7270168.html

MySQL 高水位update_Oracle delete 高水位线处理问题

最近遇到oracle 表中数据量很大查询和更新比较慢 需要删除&#xff0c;发现删除后查询速度还是很慢&#xff0c;原来是delete oracle 高水位没有下降的最近遇到Oracle 表中数据量很大查询和更新比较慢 需要删除&#xff0c;发现删除后查询速度还是很慢&#xff0c;原来是delete…

jasperreports_JasperReports JSF插件用例–简单列表报告

jasperreports这是JasperReports JSF插件系列的第一篇“用例文章” &#xff0c;我将专注于一个简单的需求&#xff0c;并且我将进一步深入。 起点是我们已经为图书商店完成的项目设置&#xff0c;我将向其中添加一个列表&#xff0c;其中包含在数据库中注册的其他图书&#xf…

mysql optimizer_mysql 参数optimizer_switch

mysql 5.1中开始引入optimizer_switch, 控制mysql优化器行为。他有一些结果集&#xff0c;通过on和off控制开启和关闭优化器行为。使用有效期全局和会话两个级别&#xff0c;在5.5中optimizer_swtich 可取结果如下&#xff0c;不同mysql版本可取结果不同。5.1和5.6参考官方文档…

2个菜鸟Java常量和枚举陷阱

在对Java和Groovy代码进行的各种代码审查中&#xff0c;我经常看到魔术数字和其他随机字符串在整个代码库中乱七八糟。 例如&#xff0c;魔术数字是下面的代码&#xff08;Groovy&#xff09;中的4.2&#xff1a; if (swashbuckle > 4.2) {... }4.2是什么意思&#xff1f;…

欧拉函数 euler

O - 找新朋友1、欧拉函数 euler&#xff08;&#xff09;在数论&#xff0c;对正整数n&#xff0c;欧拉函数是 少于或等于n的数中与n 互质 的数的数目。互质&#xff1a;公约数只有 1 的两个整数&#xff0c;称为互质整数。即 最大的公约数也就是 1 euler&#xff08;&#xf…

mysql cluster 外键_Mysql外键约束

Mysql集群创建外键&#xff0c;分为四种约束&#xff1a;no action&#xff0c;restrict&#xff0c;cascade&#xff0c;set null。如果表A的主关键字是表B中的字段&#xff0c;则该字段称为B的外键&#xff0c;表A称为主表&#xff0c;表B称为从表。外键是用来实现参照完整性…