Hibernate入门(四)之hibernate中session的创建方式

为什么要专注于session的创建方式

在有些场景必须关注session的创建,比如说在银行转账操作的时候,两个账户转账必须在同一个session中

如上面所示,账户1钱没了,账户2钱却没有到,原因就在于两者不再同一个事务当中,不能实现事务的回滚。

getCurrentSession

说明:

1、产生方式的说明

1、先检查当前线程中是否有session

2、如果当前线程中有session,则把session提取出来,直接使用

3、如果当前线程中没有session,则采用openSession方法创建session

4、把新创建的session放入到threadlocal中

5、当再次得到session的时候就是从当前线程中获取了

2、用法

1、在hibernate.cfg.xml文件中

说明session从当前线程中获取

2、在代码中

说明:

1、crud操作必须在事务的条件下运行

2、当事务提交的时候,session自动关闭

3、这种做法相当于把session和事务绑定在一起了

session总结

1、数据库的链接是由session来完成的

2、事务是由session产生的

3、Crud操作是由session完成的

4、一级缓存就是session的缓存,可以存放持久化对象

5、Session可以有两种打开方式 openSession和getCurrentSession

时间: 2024-12-25 03:38:09

Hibernate入门(四)之hibernate中session的创建方式的相关文章

Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装

Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装 你们可以直接去,http://blog.csdn.net/wei_chong_chong/article/details/52979683,楼主写的挺好的. 自己心得: Hibernate装了好久都装不上去,不是安装过程出了问题,原来是下载的那些软件根本就不对,虽然都有hibertane的英文,但是具体名称要看懂啊,最好做到和视频里面一模一样.

Hibernate入门(四)

一 Hibernate缓存 缓存是介于应用程序和数据库之间,对数据库中的数据复制一份到缓存中,其作用就是为了减少应用程序对数据库的访问,访问数据库时先从缓存中取,提高了程序的性能.Hibernate缓存分为一级缓存和二级缓存: 一级缓存:缓存范围是Session中共享,缓存的生命周期依赖于Session的生命周期,Session关闭后,缓存也关闭了,一级缓存是Hibernate内置的,不能卸除. 二级缓存:缓存范围是SessionFactory中共享,使用的是第三方插件,可插拨,缓存的生命周期依

Hibernate入门(三)之hibernate 的session的缓存机制

session缓存 缓存的生命周期 当打开session以后,该缓存就开始了,当session关闭以后,该缓存不存在,其生命周期和session的生命周期是一样的 如何将数据存放到缓存中 get方法 session.get方法可以把一个对象放入到session的缓存中,以主键标识该对象,所以我们把这样的主键也叫oid save方法 Session.save方法可以把对象放入到缓存中 update方法 session.update方法把对象放入到了session缓存中 如何测试缓存中是否有数据 说

Hibernate入门篇<1>hibernate.cfg.xml学习小结

Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,这个配置文件应该位于应用程序或Web程序的类文件夹 classes中.Hibernate配置文件支持两种形式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件,采用"键=值"的形式.建议采用xml格式的配置文件,xml配置文件可以直接对映射文件进行配置,并由Hibernate自动加载,而properties文件则必须在程序中通过编码加载映射文件. 一)hibernate配置文件模

Hibernate入门学习-安装hibernate插件

最近一直在学习ssh框架,为了更方便hibernate的使用,所以在eclipse下载hibernate插件,安装插件有两种方法 第一种:本地安装 1).插件的官网下载地址:http://tools.jboss.org/downloads/,选择你要安装的插件,如图所示: 2).打开eclipse->help->Install New Software->Add 3).选择你需要要安装的插件.不要勾选更新,否则需要联网下载,然后一直next就好了! 第二种:在线安装: Help >

kettle入门(四) 之kettle中取任意时间变量的使用详细案例

引: 在数据仓库项目中 有一类和生产或者外围系统交互的接口称为FTP文件接口, 用kettle开发.实现这种接口 配置脚本时,经常需要用时间变量来取或者上传FTP里面 固定格式文件名的文本,例如 生产系统定时 每天推送前天的数据文本 到某个FTP服务器 2014-04-28 推送文件名 2015-04-26.txt.gz 2014-04-27 推送文件名 2015-04-25.txt.gz 实现: kettle 版本3.0.4,如下图所示: 所需要三个功能组件 1 获取系统信息 2 java s

《Java从入门到放弃》入门篇:spring中AOP的配置方式

spring中最核心的两个东东,一个IOC,一个AOP. AOP(Aspect-OrientedProgramming)面向方面编程,也可以叫面向切面编程. 从一个新人的角度可以这样来理解:一般软件中的功能,我们可以分为两大类,一类是业务功能,一类是系统功能. 业务功能是指这个软件必须要用到的,没有的话客户就不给钱的.比如淘宝APP,如果你只能在上面浏览商品而不能购物,那就说明业务功能太监了···. 系统功能主要是指与业务无关,没有这块内容也不影响软件使用的.比如日志管理.权限处理等. AOP主

hibernate笔记(四)

目标: 一.hibernate查询 二.hibernate对连接池的支持 三.二级缓存 一.hibernate查询 1. 查询概述 1) Get/load主键查询 2) 对象导航查询 3) HQL查询,  Hibernate Query language                  hibernate 提供的面向对象的查询语言. 4) Criteria 查询,   完全面向对象的查询(Query By Criteria  ,QBC) 5) SQLQuery, 本地SQL查询 缺点:不能跨数

1、Struts2和Hibernate的简单整合(带Session的管理方式)

1.关于数据库:是部门和员工的关系 关于entity和xx.hbm.xml的实现 Dept.class package cn.itcast.entity; import java.util.HashSet; import java.util.Set; public class Dept { private int deptId; private String deptName; // [一对多] 部门对应的多个员工 private Set<Employee> emps = new HashSe