hibernate-session产生方式

19.session产生方式

业务场景:如何保持service调用多个dao时,统一事务。

session的产生方式

不考虑分布式环境

分布式调用

不同java虚拟机直接的对象调用

1.sessionFactory.openSession() 每次创建新session

2.sessionFactory.getCurrentSession();

(1)查看当前线程中的session是否存在

如果存在,从当前线程中取出session

如果不存在,创建一个session,并把这个session放到threadlocal中,用户从threadlocal中取出session。

(2)session.getCurrentSession的用法

1、在hibernate的配置文件中:

<property name="current_session_context_class">thread</property>

2、不需要写session.close方法,在事务提交的时候会自动关闭(由hibernate内部完成)

3、crud都需要事务

1、因为是一个线程,所以整个方法中一个session,一个事务

2、保证了整个业务操作的安全性

时间: 2024-10-11 01:08:31

hibernate-session产生方式的相关文章

hibernate中一种导致a different object with the same identifier value was already associated with the session错误方式及解决方法

先将自己出现错误的全部代码都贴出来: hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-con

(21)项目中Hibernate Session的管理方式

1.openSession和getCurrentSession的区别 package com.rk.hibernate.cache; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; public class App_SessionInProject { private static Se

hibernate session问题大总结

openSessionInView的作用! OpenSessionInViewFilter是Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,直到这个请求结束,具体是通过一个Filter来实现的.由于Hibernate引入了Lazy Load特性,使得脱离Hibernate的Session周期的对象如果再想通过getter方法取到其关联对象的值,Hibernate会抛出一个LazyLoad

org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not

遇到这个问题之前,我去百度和谷歌去搜索了一下,发现各种说法,但是针对我的项目而言,也就是公司的项目而言,这个问题的根源并非是网上所说的那样. 最后是通过自己的想法做测试得到了解决. 1.首先说说我的配置吧!我的配置是通过spring自带的注解来实现 声明式事物管理的.如果我们没去了解spring的声明式事物管理的话,或许我们是得不出什么结论的. 如果你配置过声明式事物管理,你就知道spring是怎么帮你管理的. 2.spring声明式事物管理是在service层管理的,关于到sessionFac

spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常

java.lang.IllegalStateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常 这个错误,网上说的原因一大推,反正我这个出的问题 是因为 虽然我在 spring 里把事务都配置好了,结果运行就出现这个错误,看看配置都没什么问题,都是网上 案例 照 写编码的,还是错的,结果发现是因为 我

hibernate session method

import static org.junit.Assert.*; import java.io.FileInputStream; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate

HibernateException: No Hibernate Session bound to thread

解决No Hibernate Session bound to thread 背景交代 在使用this.getHibernateTemplate().getSessionFactory().getCurrentSession()方法获取session时报以下异常信息: org.hibernate.HibernateException: No Hibernate Session bound to thread, and conf iguration does not allow creation

Use Spring transaction to simplify Hibernate session management

Spring对Hibernate有很好的支持    DataSource ->SessionFactory-> HibernateTranscationManagerHibernate中通过SessionFactory创建和维护Session.Spring对SessionFactory的配置进行了整合,无需再通过Hibernate.cfg.xml对SessionFactory进行设定.SessionFactory节点的mappingResources属性包含了映射文件的路径,list节点下可配

hibernate的查询方式

hibernate的查询方式常见的主要分为三种: HQL, QBC(Query By Criteria)查询, 以及使用原生SQL查询 HQL查询 • HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式. • HQL在语法结构上和SQL语句十分的相同,所以可以很快的上手进行使用.使用HQL需要用到Hibernate中的Query对象,该对象专门执行HQL方式的操作. 查询所有示例 session.be

hibernate annotation注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity