Hinbernate操作数据库必须要开启事务, 但是在添加事务的时候遇到这个问题也是郁闷,

说Session被关闭了, 而这个Session又是必须的.

关键是我并没有关闭, 也找不到是哪里被关闭了的.

我把代码改成如下的样子, 则是可以运行的, 在执行之前,开启事务

  /**
* 查询用户
* @param uid
* @return
*/
@Override
public User get(Integer uid) {
Transaction transaction = session.beginTransaction();
User user = null;
try {
user = session.get(User.class,uid);
transaction.commit();
} catch(Exception e) {
e.printStackTrace();
        transaction.rollback();
}
return user;
}

原因分析: 每次调用了session之后, 在事务提交了以后就会把session关闭

这是因为Hibernate会维护这个Session, 在我提交事务的时候关闭Session

解决思路:  在代码执行之前, 开启Session, 添加如下代码:

@Override
public User get(Integer uid) {
Session session = HibernateUtil.getSession();
return session.get(User.class,uid);
}

问题解决!

附HibernateUtil的代码:

package com.bj186.crm.factory;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; /**
* Hinbernate工具类
*/
public class HibernateUtil { private static SessionFactory sessionFactory; private HibernateUtil() { } static {
//1. 声明配置对象,加载配置文件
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
//2. 将配置文件告诉session工厂
sessionFactory = configuration.buildSessionFactory();
} //获取session工厂
public static Session getSession() {
if(sessionFactory !=null ) {
return sessionFactory.getCurrentSession();
}
return null;
} }

最新文章

  1. C#设计模式
  2. 通过sqoop来传输mysql/oracle/vertica数据至HBASE
  3. Android SDK Manager无法更新的解决
  4. List<?>和List<T>的区别?
  5. jquery页面刷新reload
  6. 8.1.C++ AMP简介
  7. C# 自己对delegate的总结和认识
  8. vijosP1901学姐的钱包
  9. java udp socket通信(仅发送)
  10. PHP笔记:单引号与双引号区别
  11. Groovy闭包
  12. [NOIP提高组2018day2t1]旅行
  13. IDEA——找不到或无法加载主类的一种暴力解决方法
  14. mysql 权限管理介绍
  15. Dom操作(标签--增、删、移动)
  16. UESTC--1727
  17. [Asp.net]Calendar+JqueryUi实现日程管理——添加日程
  18. 数论 + 容斥 - HDU 1695 GCD
  19. [WPF+Prism]WPF个人集成平台
  20. Python学习进程(14)异常处理

热门文章

  1. BZOJ3895 rock
  2. (水题)洛谷 - P1579 - 哥德巴赫猜想(升级版)
  3. C++笔试题(四)
  4. C++开发工程师面试题库 50~100道
  5. C++笔试题库之编程、问答题 150~200道
  6. 如何在Template Codes 中能够加载所在的Project的Assembly,获取所有Type
  7. python 面向对象十三 枚举类
  8. python 类型转换总结
  9. loj #6302. 「CodePlus 2018 3 月赛」寻找车位【线段树+单调队列】
  10. rabbitMQ的使用