Hibernate.基础篇《二》. getOpenSession() 和 getCurrentSession() - 1
Hibernate.基础篇《二》. getOpenSession() 和 getCurrentSession() - 1
说明:
在Hibernate应用中,Session接口的使用最为广泛,也成为持久化管理器,提供与持久化相关的操作,如:添加、更新、删除、加载即查询对象等。可以简单的理解为Session是JDBC中的Connection的封装。那也就是说,如果你想操作数据库(CRUD操作),那么一定会使用到Session,而Session的创建有两种:1. getOpenSession() 2. getCurrentSession() 。代码如下:
项目上仅多了一个SessionTest.java类,其它保持不变,结构如下:

SessionTest.java
package com.charles.hibernate.test; import org.hibernate.Session;
import org.junit.Test; import com.charles.hibernate.util.HibernateUtil; /**
* <p>Type: SessionTest</p>
* <p>Description: Session</p>
* @author baitang.<gy03554>
* @date 2018年10月20日 上午12:27:37
* @version v1.0.0
*/
public class SessionTest { @Test
public void getOpenSession() { // 获取OpenSession
Session openSession = HibernateUtil.getOpenSession();
System.out.println("OpenSession :" + openSession ); // 比较在同一个线程中,每次获取的Session是否为同一个?
Session openSession1 = HibernateUtil.getOpenSession();
Session openSession2 = HibernateUtil.getOpenSession();
System.out.println(openSession1 == openSession2); // #输出结果:false
} @Test
public void getCurrentSession() { /**
* 获取CurrentSession
* 注意:
* 获取CurrentSession的时候, hibernate.cfg.xml配置文件中需要配置如下配置:
* <property name="hibernate.current_session_context_class">thread</property>
* 如果不配置上面这一行,那么是拿不到CurrentSession的。
*/
Session currentSession = HibernateUtil.getCurrentSession();
System.out.println("CurrentSession :" + currentSession); // 比较在同一个线程中,每次获取的Session是否为同一个?
Session currentSession1 = HibernateUtil.getCurrentSession();
Session currentSession2 = HibernateUtil.getCurrentSession();
System.out.println(currentSession1 == currentSession2); // #输出结果:true
}
}
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://192.168.43.150:3306/hibernate</property>
<property name="connection.username">hibernate</property>
<property name="connection.password">hibernate</property> <!-- 方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 显示SQL语句 -->
<property name="hibernate.show_sql">true</property> <!-- 格式化SQL语句 -->
<property name="hibernate.format_sql">true</property> <!-- 在启动时根据配置更新数据库 -->
<!-- <property name="hbm2ddl.auto">update</property> --> <!-- 在是使用getCuurentSesion方法获取session时,需配置 -->
<property name="hibernate.current_session_context_class">thread</property> </session-factory> </hibernate-configuration>
Session总结《一》:
上面的一段代码说明了,在使用openSession()方法获取一个Session的时候,是重新建立一个新的session;而getCurrentSession() 则是获取当前线程里的session。
如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9820045.html
Hibernate.基础篇《二》. getOpenSession() 和 getCurrentSession() - 1的更多相关文章
- Hibernate.基础篇《一》.Hibernate工具类.
Hibernate.基础篇<一>.Hibernate工具类. 话述: Hibernate.基础篇第一篇,前面是代码.后面再加理论&实践. Hibernate使用的版本是:5.x,在 ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- JavaScript笔记基础篇(二)
基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...
- NIO相关基础篇二
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...
- docker+k8s基础篇二
Docker+K8s基础篇(二) docker的资源控制 A:docker的资源限制 Kubernetes的基础篇 A:DevOps的介绍 B:Kubernetes的架构概述 C:Kubernetes ...
- Python基础篇(二)_基本数据类型
Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...
- node基础篇二:模块、路由、全局变量课堂(持续)
今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...
- Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...
随机推荐
- [No000010F]Git8/9-使用GitHub
我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的.其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人 ...
- centos7安装zabbix客户端并监控
zabbxi-agent安装及配置 1.安装zabbxi-agent yum install zabbix-agent -y 2.配置zabbxi-agent grep -n '^'[a-Z] /et ...
- char是所有类型中最短的 char多为8位,
https://en.wikipedia.org/wiki/C_data_typesIn practice, char is usually eight bits in size and short ...
- C语言保证,0永远不是有效的数据地址,因此,返回址0可用来表示发生的异常事件
C语言保证,0永远不是有效的数据地址,因此,返回址0可用来表示发生的异常事件
- airflow 实战
def print_hello(*a,**b): print a print "=========" print b print 'Hello world!' raise Valu ...
- LeetCode 896 Monotonic Array 解题报告
题目要求 An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is ...
- kubernetes有状态集群服务部署与管理
有状态集群服务的两个需求:一个是存储需求,另一个是集群需求.对存储需求,Kubernetes的解决方案是:Volume.Persistent Volume .对PV,除了手动创建PV池外,还可以通过S ...
- 封装一个axios请求后台的通用方法
import axios from 'axios'; import constant from '@/js/const'; import alert from '@/js/alertView'; le ...
- 【Python】【面试必看】Python笔试题
前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出 2 个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没 ...
- laravel用crud之index列出产品items
前面我们说了laravel用crud修改产品items-新建resource controller和routing,现在我们要把产品items罗列出来,需要修改路由和模板,一起随ytakh来看看把 1 ...