Hibernate两种获得sessionFactory方式的区别

Hibernate 可以通过sessionFactory.openSession()和sessionFactory.getCurrentSession()来获得session,下面来浅说一下两者区别。

【sessionFactory.openSession()】
     通过session工厂sessionFactory.openSession()方法来获得一个session,每次都创建一个新的session出来,并且每次Hibernate都会打开数据库和应用程序的连接。

【sessionFactory.getCurrentSession()】
    通过session工厂的sessionFactory.getCurrentSession()方法获得session,并且与当前线程ThreadLocal绑定,但要在Hibernate中配置属性参数 current_session_context_class ,并且value设置为thread。否则一般会报没有配置当前线程的错误。通过此方式获得session有4个要点:

1)如果当前线程中没有session,通过openSession方法来获得一个新的session,并把新的session放到当前线程中;

2)从当前线程中的到session;

3)通过getCurrentSession()方法执行CRUD必需要开启事务;

4)一般不用手动关闭session;

Hibernate两种获得sessionFactory方式的区别

时间: 2024-12-20 06:28:56

Hibernate两种获得sessionFactory方式的区别的相关文章

Form表单中method=post/get两种数据传输的方式的区别

Form提供了两种数据传输的方式—get和post,Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法,感兴趣的朋友可以了解下,或许对你学习get/post有所帮助 Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的. Form中的get和post方法

Java中String两种不同创建方式的区别及intern的用法

一, Java有两种创建字符串的方式, String str1 = "abc"; String str2 = new String("abc"); 用双引号创建和用new来创建.这两种方式创建出来的String存储的位置上不同的.当使用双引号方式时,相当于显式的声明了字符串的值(字面值),所以是作为一个常量,存储在方法区的常量池中.使用new方式来创建String时,JVM会在堆上分配一块区域,存储一个String对象,值为“abc”. 二, String的==和e

Linux中两种脚本执行方式的区别:. xx 和 ./xx

今天继续在看Building Linux Embedded Systems一书,进入第四章,有一些实际的操作,其中在介绍了良好的组织架构(文件夹)后,建议些一个script可以进行不同的开发环境.里面很简单,包括一个export和cd的命令,这个脚本假设为 export PROJECT=/home/aaa/project1 cd $PROJECT 并取名字为 test 我执行$ ./test,发现没有效果,然后在里面增加两个跟踪语句,如下 export PROJECT=/home/aaa/pro

C/S和B/S两种架构的概念、区别和联系

这篇文章主要介绍了C/S和B/S两种架构的概念.区别和联系,本位还同时讲解了主流的Web程序应用平台.Web工作原理等内容,需要的朋友可以参考下2006_photo12 C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 1 一.C/S 架构 1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户

UIImage的两种加载方式

UIImage的两种加载方式 1.有缓存:读取后放入缓存中下次可直接读取,适用于图片较少且频繁使用. [UIImage imageNamed:@"文件名"]: 在缓存中由系统管理,当收到memoryWarning时会释放这些内存资源. 2.无缓存:用完就释放掉,参数传的是全路径,适用于图片较多较大的情况下. NSString *path = [[NSBundlemainBundle] pathForResource: @"1.png"ofType: nil]; [U

android环境下两种md5加密方式

在平时开发过程中,MD5加密是一个比较常用的算法,最常见的使用场景就是在帐号注册时,用户输入的密码经md5加密后,传输至服务器保存起来.虽然md5加密经常用,但是md5的加密原理我还真说不上来,对md5的认知目前仅仅停留在会使用的水平,想搞清楚还是要花点时间的,这是md5加密算法的相关介绍.本文主要介绍android平台下两种md5加密方式,分别为基于java语言的md5加密及ndk环境下基于c语言的md5加密. 下面代码为基于java语言的md5加密: public String getMD5

Linux驱动的两种加载方式过程分析

一.概念简述 在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用.静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译和下载内核,效率较低.若采用静态加载的驱动较多,会导致内核容量很大,浪费存储空间. 动态加载利用了Linux的module特性,可以在系统启动后用insmod命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块,采用这种动态加载的方式便于驱动程序的调试,同时可以针对产品的功能需求,进行

python实现快速排序算法(两种不同实现方式)

# -*- coding: utf-8 -*- """ Created on Fri May 16 17:24:05 2014 @author: lifeix """ #快速排序 import sys import random length = 30 def qsort(arr,left,right): lp = left rp = right if lp == rp:return while True: while arr[lp] >=

(总结)Nginx使用的php-fpm的两种进程管理方式及优化

PS:前段时间配置php-fpm的时候,无意中发现原来它还有两种进程管理方式.与Apache类似,它的进程数也是可以根据设置分为动态和静态的. php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本.在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php.ini一样的配置风格. 在5.2.x版本中,php-fpm.conf中对于进程管理号称是有两种风格,一种是静态(static)的,一种是类似于apache