Hibernate4获得Session

在Hibernate3中获取Session的方法:

Session session = this.getSession();

前提是类要继承HibernateDaoSupport:

public class XXX extends HibernateDaoSupport

在Hibernate4中,仍然需要继承HibernateDaoSupport,但是不能再this.getSession()了,只能通过SessionFacotry获得Session。首先要获得SessionFactory:

    @Resource
    private SessionFactory sessionFactory;

    @Resource
    public void setSessionFacotry(SessionFactory sessionFacotry) {
        super.setSessionFactory(sessionFacotry);
    }  

然后通过SessionFacotry获得Session:

Session session = sessionFactory.openSession();

而且,Hibernate3的getHibernateTemplate(),Hibernate4也不再支持了。

时间: 2024-10-08 05:42:52

Hibernate4获得Session的相关文章

Hibernate4 No Session found for current thread

Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for current thread”, 这个错误的原因,网上有很多解决办法, 但具体原因的分析,却没有多少, 这里转载一个原理分析: SessionFactory的getCurrentSession并不能保证在没有当前Session的情况下会自动创建一个新的,这取决于CurrentSessionContext的实现

Hibernate4 No Session found for current thread原因

Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for current thread”, 这个错误的原因,网上有很多解决办法, 但具体原因的分析,却没有多少, 这里转载一个原理分析: SessionFactory的getCurrentSession并不能保证 在没有当前Session的情况下会自动创建一个新的,这取决于CurrentSessionContext的实

Hibernate4之session核心方法

在学习session的核心方法之前,我们先了解下hibernate中几种对象的状态: 暂时状态:这样的状态就好像咱们公司请的暂时员工一样,他在公司里没有相关的资料和id. 特点:在使用代理主键的情况下, OID 通常为 null 不处于 Session 的缓存中 在数据库中没有相应的记录 持久化状态:我们能够理解成我们公司的正式在岗职工. 特点:OID 不为 null 位于 Session 缓存中 若在数据库中已经有和其相应的记录, 持久化对象和数据库中的相关记录相应 Session 在 flu

SpringMVC4+Hibernate4运行报错Could not obtain transaction-synchronized Session for current thread

查了一下相关资料,整理如下: 原因:Hibernate4 No Session found for current thread原因 解决方法: 1.  在spring 配置文件中加入  程序代码 <tx:annotation-driven transaction-manager="transactionManager"/> 并且在处理业务逻辑的类上采用注解  程序代码 @Service public class CustomerServiceImpl implements

SSH框架系列:Spring配置多个数据源

问题:有开源框架mysql的 ,还有旧系统 sqlserver2000的,解决这些问题总有些成长. 解决sqlserver安装环境:http://qdh68.blog.163.com/blog/static/13756126201261742437357/ 别说sqlserver2000不怎么样,最起码那友好的管理叫你明白数据库. 2.  先说配置jdbc:如果sqlserver 2000以上还好 找到jar包 ,按目录加载到maven仓库,安装一下 http://outofmemory.cn/

atitit.spring hibernate的事务机制 spring不能保存对象的解决

atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能. . log黑头马sql语言.. sessionFactory.getCurrentSession().update(user); 中间走ok兰..log黑头也有累.. 在Spring中使用Hibernate.假设我们配置了TransactionManager.那么我们就不应该调用SessionFactory的openSession()来获得S

myeclipse配置springmvc+hibernate+mysql+tomcat 基于maven

环境: 1.myeclipse 2014 下载+破解..  http://my-eclipse.cn/ 2.hibernate 4.2.5.Final 3.mysql 好像是最新的 4.tomcat v8 5.maven 是myeclipse内置的.. new 一个webapp的maven的项目 先添加依赖项到pom.xml <properties> <springframework>4.0.5.RELEASE</springframework> <servlet

Hibernate4运行报错Could not obtain transaction-synchronized Session for current thread

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134) org.hibernate.internal.SessionFactoryImpl.get

Hibernate4中使用getCurrentSession报Could not obtain transaction-synchronized Session for current thread

架个spring4+hibernate4的demo,dao层直接注入的sessionFactory,然后用getCurrentSession方法获取session,然后问题来了,直接报错: Could not obtain transaction-synchronized Session for current thread 提示无法获取当前线程的事务同步session,略微奇怪,这和事务有什么关系..然后百度一下有人说改成用openSession方法就好了,那我又百度了一下这2个方法的区别: