SessionFactory是一個(gè)計(jì)算機(jī)語言,指的是負(fù)責(zé)創(chuàng)建Session的核心接口,它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。
1.sessionFactory 是什么
Hibernate的核心接口之一 SessionFactory接口:SessionFactroy接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫時(shí),可以為每個(gè)數(shù)據(jù)庫指定一個(gè)SessionFactory。
2.sessionFactory 作用
用于管理Hibernate會(huì)話(session)的對(duì)象,所以,最最最簡單的理解,你可以把sessionFactory想想成里面有一個(gè)DataSource;這個(gè)對(duì)象創(chuàng)建了,hibernate才真正和數(shù)據(jù)庫連接上了。即SessionFactory維護(hù)著所有連接對(duì)象已經(jīng)連接對(duì)象的分配和銷毀;SessionFactory是線程安全的,并且創(chuàng)建和銷毀需要消耗比較大的資源,所以整個(gè)應(yīng)用里面針對(duì)一個(gè)數(shù)據(jù)庫只需要一個(gè)SessionFactory即可;
SessionFactory管理著配置在其中的映射對(duì)象的解析數(shù)據(jù),動(dòng)作監(jiān)聽器,NamedQuery等大量信息;
sessionFactory的相關(guān)方法返回session對(duì)象,而不是平常的new關(guān)鍵字創(chuàng)建session
3.ssionFactory 使用方法
/**
*@param str
*@param int
*更新String類型的字段
*/
public int updateDm_bm(String str){
int resu=0;
//獲取會(huì)話工廠
SessionFactory sf=this.getSessionFactory();
//獲取SessionFactory的會(huì)話
Session session=(Session)this.getSessionFactory().getCurrentSession();
sf.openSession();
//開始事務(wù)
Transaction t=session.beginTransaction();
Query query =session.createQuery(str);
//提交事務(wù)
resu=query.executeUpdate();
// Query.executeUpdate()方法返回的整型值表明了受此操作影響
return resu;
}
此方法如果傳入一條數(shù)據(jù)修改語句。就可以直接執(zhí)行返回成功與否的結(jié)果。
而此處的SessionFactory一旦聲明,就不必去顧及數(shù)據(jù)庫連接的問題,很方便。
評(píng)論
查看更多