1. 程式人生 > >Spring4+Hibernate4整合,關於獲取SessionFactory

Spring4+Hibernate4整合,關於獲取SessionFactory

最近專案在整合後臺框架,將原來的Spring3.2換為Spring4,Hibernate3換為Hibernate4,以前的Dao元件要做修改。

Spring3時代,為整合Hibernate3提供了HibernateTemplate,為Dao提供了工具類:HibernateDaoSupport。Spring4進行了擴充套件,不再推薦使用HibernateTemplate,HibernateDaoSupport來實現Dao元件,而是使用SessionFactory的getCurrentSession()獲取session,然後進行持久化。

在實現Dao元件獲取session時又遇到問題:

dao實現如下:

    public T get(Class<T> entityClazz, Serializable id) {
        return (T) sessionFactory.getCurrentSession().get(entityClazz, id);
    }

啟動後報錯:
org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
	org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
如果將
sessionFactory.getCurrentSession().get(entityClazz, id);
換為
sessionFactory.openSession().get(entityClazz, id);
則顯示正常,於是就查閱了一下兩者的不同:
openSession ,是開啟一個新的session物件,而且每次使用都是開啟一個新的session,假如連續使用多次,則獲得的session不是同一個物件,並且使用完需要呼叫close方法關閉session。
getCurrentSession ,是獲取當前上下文一個session物件,當第一次使用此方法時,會自動產生一個session物件,並且連續使用多次時,得到的session都是同一個物件,並且事務提交會自動close,不需要像openSession一樣自己呼叫close方法關閉session
所以,使用getCurrentSession 就要進行事務管理配置,以下是基於註解方式的事務管理配置:(注意匯入aopaliance.jar)
<?xml version="1.0" encoding="UTF-8"?>
[email protected]Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {


    @Resource(name = "userDao")
    private IUserDao userDao;
    @Override
    public String test() {
        return userDao.test();
    }

    @Override
    public Employee getEmployeeById(Integer id) {
        return userDao.getEmployeeById(id);
    }
}

相關推薦

Spring4+Hibernate4整合關於獲取SessionFactory

最近專案在整合後臺框架,將原來的Spring3.2換為Spring4,Hibernate3換為Hibernate4,以前的Dao元件要做修改。 Spring3時代,為整合Hibernate3提供了HibernateTemplate,為Dao提供了工具類:HibernateD

SpringMVC+Spring4+Mybatis3整合開發簡單Web專案+原始碼下載

基本準備工作 1、安裝JDK1.6以上版本,安裝與配置 4、Spring-4.0.0的版本 5、tomacat6.x以上版本即可 當然,這些jar還不夠,還需要MySQL資料庫與驅動,log4j的jar等等。下面我們開始今天的旅行: 第一步:建立資料庫表

【持久化框架】SpringMVC+Spring4+Mybatis3整合開發簡單Web專案+原始碼下載

      上篇博文我們介紹了mybatis的基本概念與原理,這篇博文我們通過Spring與Mybatis整合,開發一個簡單使用者增刪改查的Web專案。 基本準備工作 1、安裝JDK1.6以上版本,安裝與配置 4、Spring-4.0.0的版本 5、tomacat6

持久化框架】SpringMVC+Spring4+Mybatis3整合開發簡單Web專案+原始碼下載

轉自:https://blog.csdn.net/jiuqiyuliang/article/details/45132493 上篇博文我們介紹了mybatis的基本概念與原理,這篇博文我們通過Spring與Mybatis整合,開發一個簡單使用者增刪改查的Web專案。   基本準

關於“Spring3 ”與 “Hibernate4整合HibernateTemplate的使用問題。

在Spring3與Hibernate4整個中,Spring3提供的HibernateTemplate類已經被捨棄了,因為在Hibernate4中已經可以自己對事物進行管理,不需要Spring了進行事物的管理,要是使用了Hibernate的Template會出現下面的錯誤資訊

Configuration.buildSessionFactory()過時之後獲取SessionFactory的寫法

<span style="font-size:14px;">import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.ser

maven+springmvc+spring4+hibernate4整合

最近在將maven、springmvc、spring4、hibernate4幾個技術整合做個專案,剛開始的配置就一直出現問題,所以今天做個總結,這是整個專案針對註冊功能的相關配置及實現。 1. web.xml配置: <?xml version="1.0" encodi

Hibernate4Spring4整合使用Junit4測試相關學習筆記

一、在myeclipse中建立web project 1.匯入Hibernate4.1與Spring4.1的Libraries。其中myeclipse自帶的spring libraries中缺少spring-test.jar包,需要自己從網上下載。mysql與c3p

Spring4+SpringMVC+Hibernate4整合入門與實例

type 解析 .class -m .config ise pri generated driver 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:

Spring4 MVC Hibernate4整合 Annotation

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.o

spring4 ssm整合quartz單定時任務

這種配置方式,只適合在專案新增後臺定時任務。 1.新增maven依賴 <!-- quartz--> <dependency> <groupId>org.quartz-scheduler</groupI

SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架搭建一個前後端web網站(2)

百度編輯器編輯文章 利用百度編輯器實現文章的編寫,實現效果如下: 可以看到利用百度編輯可以很好的實現文字的排版效果,同時還可以多圖上傳以及新增錨點和上傳視屏。 配置的一些關鍵點: 當從

SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架搭建一個前後端web網站(1)

前言: 利用暑假2個月的時間,自己用框架搭建了一個前後端web網站,因為時間有限,暑假之後便沒有再修改過了。因為這是自己第一次利用架構做的網站,所以在做的過程中也是“一波三折”,需要用到的知識點也是書

Java整合小程式獲取使用者資訊

微信小程式登入獲取使用者資訊 WeChaConnView.java @RestController @RequestMapping(value = "/wechat") public class WeChaConnView { /*

SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架搭建一個前後端web網站(3)

為你推薦(模仿cache排程演算法) 網站有為你推薦模組,我是模仿計算機組成原理中的cache的排程演算法。簡單介紹:網站通過將所有的資訊和標籤掛鉤。我給每個使用者20條的“儲存標籤”的空間。其中10條為被標記成old的標籤,10條為被標記成new

springmvc4+hibernate4整合框架的搭建超詳細哦

放假了!週六日休息!來北京真的不容易呀!和他們一起租房雖然便宜吧!但是週六都在打遊戲!無賴,只能來公司了,前幾天一直糾結於怎麼搭建springmvc+hibernate整合框架,百度了一番,各種報錯的情況,最終算是搭建好了吧!其實對於我個人來說,以前做Andro

Eclipse 引入 dubbo報錯無法與 Spring4.0 整合的異常修復

在第一次將dubbo整合進當前專案時,發現無法使用。網上有很多類似帖子,嘗試了多好,將類似答案進行了整理,得出了可以解決自己問題的答案。不能保證完全解除此異常,但對我是有用的 涉及軟體與技術

SpringMVC4+Spring4+Hibernate4框架整合

                            SpringMVC4 + Spring4 + Hibernate4 框架搭建中。。。

js和安卓app互相傳資料(安卓app頁面整合html頁面獲取資料並給安卓返回資料)

先上Demo:<!DOCTYPE html><html><head>    <meta charset="utf-8"></head><body><button onclick="test()"&g

SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架搭建一個前後端web網站(4)

拆分百度編輯器,實現網站評論和圖片上傳 效果如下: 我們可以通過修改百度編輯器來達到比較美觀的效果。圖一是將百度編輯器改成一個評論區。圖二是隻提取百度編輯器的上傳圖片功能,這比