日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

使用HibernateTemplate

系統(tǒng) 2021 0

使用HibernateTemplate
HibernateTemplate 可將Hibernate 的持久層訪問模板化,使用HibernateTemplate 非常簡單。創(chuàng)建Hi bernateTemplate 實(shí)例后,注入一個(gè)SessionFactory 的引用,就可執(zhí)行持久化操作。SessionFactoyr 對象可通過構(gòu)造參數(shù)傳入,或通過設(shè)值方式傳入。例如:
//獲取Spring 上下文
ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
//通過上下文獲得SessionFactory
SessionFactory sessionFactory = (SessionFactory) ctx.getBean("sessionFactory") ,
HibernateTemplate 提供如下三個(gè)構(gòu)造函數(shù):
? HibernateTemplateO 。
? HibernateTemplate(org.hibernate.SessionFactory sessionFactory)。
? HibernateTemplate(org.hibernate.SessionFactory sessionFactory, boolean allowCreate) 。?

第一個(gè)構(gòu)造函數(shù):構(gòu)造一個(gè)默認(rèn)的HibernateTemplate 實(shí)例,因此,使用HibernateTemplate實(shí)例之前,還必須使用方法setSessionFactory(SessionFactory sessionFactory)來為HibernateTemplate 傳入SessionFactory 的引用。
第二個(gè)構(gòu)造函數(shù):在構(gòu)造時(shí)已經(jīng)傳入SessionFactory 引用。
第三個(gè)構(gòu)造函數(shù):其boolean 型參數(shù)表明,如果當(dāng)前線程己經(jīng)存在一個(gè)非事務(wù)性的Session ,是否直接返回此非事務(wù)性的Session 。
對于在Web 應(yīng)用中,通常啟動(dòng)時(shí)自動(dòng)加載ApplicationContext , SessionFactory 和DAD對象都處在Spring 上下文管理下。因此無須在代碼中顯式設(shè)置,可采用依賴注入解耦SessionFactory 和DAO.

?其依賴關(guān)系可通過配置文件來設(shè)置

<? xml?version="1.0"?encoding="gb2312" ?>
<!-- Spring?配置文件的DTD?定義二〉
<!DOCTYPE?beans?PUBLIC?"-!!SPRING!!DTD?BEAN!!EN"??''http://www.springframework.org/dtd/spring-beans.dtd''>
????<!?--?Spring?配置文件的根元素是beans
-->
????
< beans >
????????
<!-- 定義數(shù)據(jù)源,該bean?的ID?為dataSource -->
????????
< bean? id ="?dataSource" ?class ="?org.?springframework.jdbc.?datasource.?DriverManagerDataSource" >
????????
<!-- ?指定數(shù)據(jù)庫驅(qū)動(dòng) -->
????????
< property? name ="driverClassName" >< value > com.mysql.jdbc.Driver </ value ></ property >
????????
<!-- ?指定連接數(shù)據(jù)庫的URL -->
????????
< property? name ="url" >< value > jdbc:mysql://wonder:3306/j2ee </ ?value >
????????
<! property >
????????
<!-- ?root?為數(shù)據(jù)庫的用戶名 -->
????????
< property? name ="username" >< value > root </ value ></ property >
????????
<!-- pass?為數(shù)據(jù)庫密碼 -->
????????
< property? name =?"password" ? >< value > pass </ value ></ property >
????
</ bean >
????
<!-- 定義Hibernate?的SessionFactoy -->
????
< bean? id ="sessionFactory" ?class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
????????
<!-- 依賴注入數(shù)據(jù)源,注入正是上文定義的dataSource -->
????????
< property? name ="dataSource" >< ref? local ="dataSource" /></ property >
????????
<!-- mappingResouces屬性用來列出全部映射文件〉
????????<property?name="mappingResources">
????????????<list>
????????????????<!--以下用來列出所有的PO?映射文件
-->
????????????????
< value > lee/Person.hbm.xml </ value >
????????????
</ list >
????????
</ property >
????????
<!-- 定義Hibernate?的SessionFactory的屬性 -->
????????
< property? name ="hibernateProperties" >
????????????
< props >
????????????????
<!-- ?指定Hibernate?的連接方言 -->
????????????????
< prop? key ="hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ prop >
????????????????
<!-- 不同數(shù)據(jù)庫連接,啟動(dòng)時(shí)選擇create?,?update?,?create-drop -->
????????????????
< prop? key ="hibernate.hbm2ddl.auto" > update </ prop >
????????????
</ props >
????
</ property >
????
</ bean >
????
<!-- 配置Person?持久化類的DAO?bean -->
????
< bean? id ="personDao" ?class ="lee.PersonDaoImpl" >
????????
<!-- 采用依賴注入來傳入SessionFactory的引用〉
????????<property?name="sessionFactory"><ref?local="sessionFactory"/></property>
????</bean>
</beans>

?

在DAO 實(shí)現(xiàn)類中,可采用更簡單的方式來取得HibemateTemplate的實(shí)例。代碼如下:

public ? class ?PersonDaoImpl? implements ?PersonDao
... {
????
// ?執(zhí)行持久化操作的HibernateTemplate
????HibernateTemplate?ht;
????
private ?SessionFactory?sessionFactory;
????
// 依賴注入Sess工onFactory?的必需的setter?方法
???? public ? void ?setSessionFactory(SessionFactory?sessionFactory)
????
... {
????????
this .sessionFactory? = ?sessionFactory;
????}

????
// 該方法用于完成HibernateTemplate的初始化
???? private ? void ?setHibernateTemplate()????
????
... {
????????
if ?(ht? == null ) ... {
????????????ht?
= ? new ?HibernateTemplate(sessionFactory);
????????}

????}

????
/**?*/ /**
????*加載Person?實(shí)例
????*?
@param ?id?需要加載Person?實(shí)例的主鍵值
????*?
@return ?返回加載的Person?實(shí)例
????
*/

????
public ?Person?get( int ?id) ... {
????????setHibernateTemplate();
????????
return ?(Person)ht.get(Person. class ?,? new ?Integer(id));
????}

????
/**?*/ /**
????*保存Person?實(shí)例
????*?
@param ?person?需要保存的Person?實(shí)例
????
*/

????
public ? void ?save(Person?person) ... {
????????setHibernateTemplate()?;
????????ht.save(person)?;
????}

????
/**?*/ /**
????*修改Person?實(shí)例
????*?
@param ?person?需要修改的Person?實(shí)例
????
*/

????
public ? void ?update(Person?person) ... {
????????setHibernateTemplate();
????????ht.update(person);
????}

????
/**?*/ /**
????*刪除Person?實(shí)例
????*?
@param ?id?需要?jiǎng)h除的Person?id
????
*/

????
public ? void ?delete( int ?id) ... {
????????setHibernateTemplate();
????????ht.delete(ht.get(Person.
class ?,? new ?Integer(id)));
????}

????
/**?*/ /**
????*刪除Person?實(shí)例
????*?
@param ?perso口需要?jiǎng)h除的Person?實(shí)例
????
*/

????
public ? void ?delete(Person?person) ... {
????????setHibernateTemplate();
????????ht.delete(person)?;
????}

????
/**?*/ /**
????*根據(jù)用戶名查找Person
????*?
@param ?name?用戶名
????*?
@return ?用戶名對應(yīng)的全部用戶
????
*/

????
public ?List?findByPerson(String?name) ... {
????????setHibernateTemplate();
????????
return ?h?t.?find( " from?Person?p?where?p.name?like?? " ?,?name);
????}

????
/**?*/ /**
????*返回全部的Person?實(shí)例
????*?
@return ?全部的Person?實(shí)例
????
*/

????
public ?List?findAllPerson() ... {
????????setHibernateTemplate();
????????
return ?ht.find( " from?Person? " );
????}

}

使用HibernateTemplate


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 鄢陵县| 汝南县| 大关县| 遵义市| 赞皇县| 嘉义县| 日喀则市| 青龙| 龙游县| 肇东市| 城口县| 宽甸| 普陀区| 徐汇区| 商南县| 雷山县| 莆田市| 宜兰市| 蒙山县| 常山县| 宁陕县| 吉林省| 大渡口区| 秀山| 秦皇岛市| 塔河县| 济宁市| 大邑县| 万安县| 九龙县| 杨浦区| 宾阳县| 肇源县| 宁南县| 余干县| 惠来县| 西昌市| 博客| 依兰县| 临汾市| 南投市|