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 ...
随机推荐
- [No0000DE]C# XmlHelper XML类型操作 类封装
using System; using System.Data; using System.IO; using System.Text; using System.Threading; using S ...
- [No0000D8]rar合并到JPG.bat用图片隐藏文件
echo off cls echo 请拖入jpg图像文件后回车: set /p imagefile= echo 请拖入rar文件后回车: set /p rarfile= copy /b %imagef ...
- MySQL的一些概念
数据库与服务器.客户端的层次关系 关于数据库 程序中需要存储数据的方式: 1 变量(列表.元组.集合.字典.嵌套) 2 外存(文件)(*.ini) 3 表格.Excel(*.xls.*.xlsx.*. ...
- 2015年蓝桥杯省赛A组c++第5题(回溯算法填空)
/* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. */ #include <stdio.h> void tes ...
- ubuntu物理机上搭建Kubernetes集群 -- master 配置
1. 将 kube-apiserver, kube-controller-manager, kube-scheduler,kubectl 拷贝到/usr/bin目录下 2. 安装etcd sudo ...
- 最全的MonkeyRunner自动化测试从入门到精通(2)
一.Python环境变量的配置 步骤一:在官网进行下载python安装包,官网下载的路径:https://www.python.org/,如图所示: 步骤二:下载完成后,双击安装包,进行如下安装的界面 ...
- HTML中select的option设置selected="selected"无效的解决方案
今天遇到了一个奇葩问题,写HTML时有个select控件,通过设置option的selected="selected"居然无效,但是在其他浏览器是可以的,问了一下Google大神, ...
- Interceptor的基本介绍和使用
简介 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Act ...
- 九九乘法表python3写入文件中
写入文件代码如下: with open("e:\\test01.txt","w+",encoding="utf-8") as wq: for ...
- 关于安装SVN Service 出错 Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details
关于安装SVN Service 出错 Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in ...