更新時(shí)間:2022-04-29 09:44:54 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1850次
Hibernate的Session獲取方式是什么?動(dòng)力節(jié)點(diǎn)小編來告訴大家。Session是應(yīng)用程序與數(shù)據(jù)庫之間的一個(gè)會(huì)話,其重要性不言而喻。初學(xué)Hibernate,使用SessionFactory,老老實(shí)實(shí)地打開事務(wù),提交,回滾,關(guān)閉session。
例子如下:
try {
SessionFactory sf =
new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
也可用 sf.getCurrentSession();區(qū)別在于前者每次都創(chuàng)建一個(gè)新的Session,而后者在當(dāng)前無Session時(shí)才創(chuàng)建,否則會(huì)綁定到當(dāng)前已有線程;前者必須手動(dòng)關(guān)閉,后者在事務(wù)結(jié)束后自動(dòng)關(guān)閉。
Transaction tx = session.beginTransaction();
……
……
……
若干操作
tx.commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
后來,由于這樣做太過繁瑣每一步都得自行建立,因此引入spring管理Session。sessionfactory的創(chuàng)建等都交給spring管理.用戶可以不再考慮session的管理,事務(wù)的開啟關(guān)閉.只需配置事務(wù)即可.
在applicationContext.xml中配置好相關(guān)事務(wù),就可以很方便地獲取Session了。
@Autowired
HibernateTemplate hibernateTemplate;
Session session=hibernateTemplate.getSessionFactory().openSession();
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException{
do something;
}
});
在Spring+Hibernate環(huán)境中,推薦用這種方式來獲取session。這種方法的優(yōu)勢(shì)在于你不需要對(duì)session進(jìn)行維護(hù),會(huì)由Spring事務(wù)管理。你只需在需要session環(huán)境時(shí),調(diào)用即可。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743