- 浏览: 184253 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (361)
- MySQL (27)
- dubbo (1)
- 网页模板 (3)
- 微信公众号 (6)
- Web工具 (7)
- Java (46)
- CSS (6)
- SQL (2)
- 数据库 (2)
- 其他 (12)
- Oracle (9)
- Tomcat (15)
- 技巧 (3)
- 基础 (4)
- 工作流 (1)
- js (25)
- maven (9)
- 异常问题 (1)
- 新知识 (5)
- PS (11)
- bootstrap (1)
- 开源框架 (5)
- 计算机网络 (1)
- MongoDB (1)
- HTML (3)
- sqlite (1)
- 微信 (3)
- Web组件 (4)
- jquery (1)
- hadoop (1)
- Redis (1)
- A_Windows常用快捷键 (3)
- eclipse (10)
- jetty (1)
- RESTEasy (1)
- Jersey (1)
- SVN (2)
- ubuntu (6)
- zookeeper (1)
- SpringMVC (7)
- 手册 (1)
- Apache ant (5)
- JBPM (1)
- activiti (3)
- Solr (1)
- EJB (1)
- 图片素材 (2)
- JSF (1)
- jboss (3)
- Android (32)
- WeX5 (1)
- 百度地图 (1)
- 电路设计 (1)
- excel (2)
- Web服务器应用服务器 (1)
- CXF (1)
- github (4)
- C# (1)
- Shiro (1)
- Lucene (1)
- Quartz (1)
- Linux (5)
- Smart Framework (1)
- JPA (6)
- 微信JS-SDK (1)
- RESTful (1)
- springboot (1)
- 文章 (2)
- springcloud (1)
- Eureka (1)
- drools (1)
- hibernate (3)
- IIC (1)
- 不错的博客 (1)
- 电脑操作系统问题 (1)
- JVM (1)
- excel操作工具 (0)
- 报表工具 (1)
- mail (1)
- apache (2)
- nginx (2)
- UML (1)
- 原型设计 (1)
- 消息队列框架 (1)
- DataTables (1)
- Mybatis (1)
- JFINAL (1)
- layer (1)
- MariaDB (1)
- NPM (1)
- LOG4J (2)
- 未知 (2)
- 正则表达式 (1)
最新评论
一:getCurrentSession () 使用当前的 session
注意:1,使用 SessionFactory.getCurrentSession() 需要在 hibernate.cfg.xml 中如下配置:
如果采用 jdbc 独立引用程序配置如下:
<property name="hibernate.current_session_context_class">thread</property>
如果采用了 JTA 事务配置如下
<property name="hibernate.current_session_context_class">jta</property>
2,使用的是 getCurrentSession 来创建 session 的话,在 commit 后,session 就自动被关闭了,也就是不用再 session.close() 了。
二:openSession() 重新建立新的 session
注意:1,使用的是 openSession 来创建 session 的话,在 commit 后,session 必须显示的关闭,也就是调用 session.close() 方法。
在应用程序中,如果 DAO 层使用 Spring 的 hibernate 模板,通过 Spring 来控制 session 的生命周期,则应该 getCurrentSession ()。
HibernateUtil 工具类
Java代码 收藏代码
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
使用:Session s = HibernateUtil.getSessionFactory().getCurrentSession(); 即可获取 Session
注意:1,使用 SessionFactory.getCurrentSession() 需要在 hibernate.cfg.xml 中如下配置:
如果采用 jdbc 独立引用程序配置如下:
<property name="hibernate.current_session_context_class">thread</property>
如果采用了 JTA 事务配置如下
<property name="hibernate.current_session_context_class">jta</property>
2,使用的是 getCurrentSession 来创建 session 的话,在 commit 后,session 就自动被关闭了,也就是不用再 session.close() 了。
二:openSession() 重新建立新的 session
注意:1,使用的是 openSession 来创建 session 的话,在 commit 后,session 必须显示的关闭,也就是调用 session.close() 方法。
在应用程序中,如果 DAO 层使用 Spring 的 hibernate 模板,通过 Spring 来控制 session 的生命周期,则应该 getCurrentSession ()。
HibernateUtil 工具类
Java代码 收藏代码
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
使用:Session s = HibernateUtil.getSessionFactory().getCurrentSession(); 即可获取 Session
发表评论
-
跨域问题:解决跨域的三种方案
2018-01-22 13:37 638https://www.cnblogs.com/itmacy ... -
设置工程环境变量动态读取资源文件
2018-01-15 14:51 404http://blog.csdn.net/peaceforev ... -
Java读取资源文件的5种方法
2017-08-31 16:53 502https://www.cnblogs.com/EasonJi ... -
Hibernate 执行原始SQL语句
2017-08-29 17:32 353http://blog.csdn.net/xumengxing ... -
Java中执行存储过程和函数
2017-08-29 17:30 903http://www.cnblogs.com/Zengc-33 ... -
java实现给图片添加水印
2017-08-29 13:36 1619http://blog.csdn.net/zengshunya ... -
J2EE
2017-07-20 23:42 345现在就知道J2EE是做什么的了吧 首先java它对开发基于We ... -
HttpClient JSON参数请求
2017-05-26 16:36 434https://www.iteblog.com/archive ... -
HttpClient设置超时、中文乱码
2017-05-25 14:43 339HttpClient设置超时 http://blog.csdn ... -
阿里巴巴的FastJSON解析JSON例子,超级好用。
2017-05-05 09:40 1420http://blog.csdn.net/dwzjs/art ... -
java获取当前路径的几种方法
2017-04-26 10:36 3801、利用System.getProperty()函数获取当前路 ... -
Java中如何遍历Map对象的4种方法
2017-04-26 09:15 341http://blog.csdn.net/tjcyjd/art ... -
JDK、JRE、JVM三者间的关系
2017-04-24 09:04 527JDK、JRE、JVM三者间的关系 http://pla ... -
JVM性能调优
2017-04-24 08:59 373JVM性能调优 http://www.zuidaima.com ... -
基于springMVC+springSecurity3.x+Mybaits3.x的权限系统
2017-04-21 16:58 399http://www.open-open.com/lib/vi ... -
JVM的内部组成
2017-04-11 11:02 367http://blog.csdn.net/wuwenxiang ... -
Lombok
2017-04-11 10:49 367在写Java程序的时候经常会遇到如下情形: 新建了一个Cla ... -
Java 8新特性
2017-04-10 15:39 301Java 8新特性终极指南 JDK8 十大新特性详 ... -
Java 7 新的 try-with-resources 语句,自动资源释放
2017-04-10 15:05 357http://blog.csdn.net/lzm ... -
JDK1.7的新特性
2017-04-10 14:15 409JDK1.7的新特性 http://blog.csdn.net ...
相关推荐
标题中的“SessionFactory.getCurrentSession与openSession的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...
在Java的Hibernate框架中,`getCurrentSession()` 和 `openSession()` 都是用于获取与数据库交互的Session对象,但它们之间存在显著的区别。理解这些差异对于优化数据访问性能和管理事务至关重要。 首先,`...
2. **为什么使用getCurrentSession()**:与直接调用`openSession()`创建新的Session相比,`getCurrentSession()`有以下优势: - 它能够自动管理Session的生命周期,比如在请求结束时关闭Session,避免资源泄露。 -...
当我们调用SessionFactory().getCurrentSession()时,Hibernate会为我们提供一个已存在的或者新创建的Session实例,这个行为与直接调用SessionFactory.openSession()有所不同。`getCurrentSession()`方法旨在支持...
同时,还探讨了Hibernate框架中getCurrentSession()与openSession()的区别。 首先,要操作数据库中的Clob字段,需要关注的是如何在Java对象与Clob字段之间进行转换。由于Clob字段通常用于存储大量文本数据,如果...
11. Hibernate中getCurrentSession和openSession的区别是什么? `getCurrentSession`是用于在已有的事务上下文中获取或创建Session,确保与当前事务的一致性。而`openSession`则是直接创建一个新的Session,不考虑...
8. getCurrentSession()和openSession()的区别: - getCurrentSession()会检查当前线程是否已有Session,若有则返回,若无则创建。 - openSession()方法总是创建一个新的Session。 - getCurrentSession()在事务...
openSession()和getCurrentSession()方法都是用于获取Session对象的方法,但它们有所不同。getCurrentSession创建的Session对象会和当前线程绑定,而openSession不会。getCurrentSession创建的Session对象在事务...
本文详细介绍了 Hibernate 中 Session 的关闭实例解析,包括 getSession() 和 openSession() 的区别、getCurrentSession() 的配置、openSession() 和 getCurrentSession() 的关联,以及 Session 的关闭。希望本文...
2. Hibernate 中 openSession()和 getCurrentSession()的差别 Hibernate 是一个基于Java的持久层框架,它提供了对数据库的访问和操作能力。openSession()和getCurrentSession()是Hibernate中两个重要的Session创建...
2. **编程式事务与OpenSession/GetCurrentSession的区别**: 编程式事务处理是手动管理事务边界,而OpenSession/GetCurrentSession模式则是在操作数据库时自动开启和关闭Session。这两者在事务管理和性能上有不同的...
openSession 和 getCurrentSession 是 Hibernate 中的两个会话方法,openSession 用于创建新的会话,getCurrentSession 用于获取当前会话。 saveOrUpdate() 和 merge() saveOrUpdate() 和 merge() 是 Hibernate 中...
`getCurrentSession()`创建的Session与当前线程绑定,事务结束后自动关闭,而`openSession()`则不会自动管理,需要手动关闭。`getCurrentSession()`更适用于需要在同一个事务中操作多个对象的情况。 7. **Session...
在Hibernate中,我们有两种方式来获取和管理Session:`openSession()`和`getCurrentSession()`。`openSession()`每次都会创建一个新的Session,并且在使用完毕后需要手动关闭,这适用于短生命周期的事务。而`...
这两个方法的区别在于,openSession()方法可以在一个线程中使用不同的Session,而getCurrentSession()方法则可以在同一线程中,保证使用同一个Session。 三、填空题解释 1. MVC的三个组成部分:MVC的三个组成部分...
- `getCurrentSession()`和`openSession()`的区别:`getCurrentSession()`会绑定到当前线程,便于事务管理,而`openSession()`需要手动管理Session的生命周期。使用`getCurrentSession()`需要在配置文件中指定适当的...
- 区分getCurrentSession()与openSession()的使用场景,以及它们对于事务和性能的不同影响。 8. **Cascading和Inverse配置:** - Cascading和Inverse用于解决实体间关系的维护问题,有助于减少不必要的数据库操作...
6. Hibernate 框架中的 SessionFactory 类有两个获得 session 的方法:openSession() 和 getCurrentSession()。如果需要在同一线程中,保证使用同一个 Session 则使用 getCurrentSession(),如果在一个线程中,需要...