版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、spring4 .x + hibernate4 .x 配置詳解關(guān)于spring和hibernate的使用以及特征等等,在此不再啰嗦,相信大家也都知道,或者去搜索一下即可。本篇博文的內(nèi)容主要是我最近整理的關(guān)于spring4.x和hibernate 4.x相關(guān)配置和使用方式,當(dāng)然spring3.x以及hibernate4.x 也可以借鑒。首先是配置文件web.xml增加以下代碼即可<!-加載spring相關(guān)的配置文件-><con text-param><param-n ame>c on textCo nfigLocati on</param-n ame&g
2、t; vparam-value>classpath*:/applicati onCon text.xml</param-value> v/con text-param><!-啟用 spring 監(jiān)聽->vliste ner>vliste ner-class>org.spri ngframework.web.c on text.C on textLoaderListe nev/l iste ner-class>v/liste ner>然后建立applicati on Co ntext.xml文件,src下。文件內(nèi)容如下,注釋我盡量寫的很
3、詳細(xì)<bea ns xml ns:xsi="/2001/XMLSchema-i nsta nee"xmlns="/schema/beans" xmlns:aop="http:/ww w.spri /schema/aop"xmlns:context="/schema/context" xmlns:tx="ht tp:/www.
4、/schema/tx"xmlns:cache="/schema/cache" xmlns:p="http: /schema/p"xsi:schemaLocation="/schema/bea ns /schema/bea ns/spri ng-bea ns-4.0.xsd http
5、://schema/aop /schema/aop/spri ng-aop-4.0.xsd /schema/co ntext /schema/co ntext/spri ng-co ntext-4.0.xsd /schema/tx /schema/tx/spri
6、ng-tx-4.0.xsd/schema/cache http:/www.spri /schema/cache/spri ng-cache-4.0.xsd"><!-引入 properties文件-><context:property-placeholder location ="classpath*:/appCperties" /><!-定義數(shù)據(jù)庫連接池數(shù)據(jù)源bean destroy-method="close
7、39;的作用是當(dāng)數(shù)據(jù) 庫連接不使用的時候,就把該連接重新放到數(shù)據(jù)池中,方便下次使用調(diào)用-><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSourc e"destroy-method="close"><!-設(shè)置JDBC驅(qū)動名稱-><property name="driverClass" value="$jdbc.driver" /><!-設(shè)置 JDBC 連接 URL -
8、><property name="jdbcUrl" value="$jdbc.url" /><!-設(shè)置數(shù)據(jù)庫用戶名-><property name="user" value="$jdbc.username" /><!-設(shè)置數(shù)據(jù)庫密碼-><property name="password" value="$jdbc.password" /><!-設(shè)置連接池初始值-><property name=&
9、quot;initialPoolSize" value="5" /></bean><!-配置 sessionFactory -><bea n id="sessi onF actory"class="org.spri ngframework.orm.hiber nate4.LocalSessi onF actoryBea n"><!-數(shù)據(jù)源-><property name="dataSource" ref="dataSource"
10、; /><!- hibernate的相關(guān)屬性配置 -><property n ame="hiber nateProperties"><value><!-設(shè)置數(shù)據(jù)庫方言->hibernate.dialect=org.hibernate.dialect.MySQLDialect<!-設(shè)置自動創(chuàng)建|更新|驗(yàn)證數(shù)據(jù)庫表結(jié)構(gòu)->hiber nate.hbm2ddl.auto=update<!-是否在控制臺顯示sql ->hibernate.show_sql=true<!-是否格式化sql,優(yōu)化顯示-&
11、gt;hiber nate.format_sql=true<!-是否開啟級緩存->hiber nate.cache.use_sec on d_level_cache=false<!-是否開啟查詢緩存->hiber nate.cache.use_query_cache=false<!-數(shù)據(jù)庫批量查詢最大數(shù)->hibernate.jdbc.fetch_size=50<!-數(shù)據(jù)庫批量更新、添加、刪除操作最大數(shù)->hibernate.jdbc.batch_size=50<!-是否自動提交事務(wù)->hiber nate.c onnection.
12、autocommit=true<!-指定hibernate在何時釋放JDBC連接->hiber nate.c onnection .release_mode=auto<!-倉U建 session方式 hibernate4.x 的方式->hibernate.curre nt_sessio n_con text_class=org.spri ngframework.or m.hibern ate4.Spri ngSessio nCon text<!- javax.persistence.validation.mode默認(rèn)情況下是 auto 的, 就是說如果不設(shè)置的話它
13、是會自動去你的classpath下面找一個bean-validation*包所以把它設(shè)置為none即可->javax.persiste nce.validati on.m ode=none</value></property><!-自動掃描實(shí)體對象 tdxy.bean的包結(jié)構(gòu)中存放實(shí)體類->vproperty name="packagesToScan"value="tdxy.bean" /></bean><!-定義事務(wù)管理-><bea n id="tra nsacti
14、 onMan ager"class="org.spri ngframework.orm.hibernate4.HibernateTra nsactio nMan ager "><property name="sessionFactory" ref="sessionFactory" /></bean><!-定義 Autowired 自動注入 bean -><bea n class="org.spri ngframework.bea ns.factory.a nn ota
15、tio n.AutowiredA nno tati on BeanPostProcessor"/><!-掃描有注解的文件base-package包路徑-><con text:comp onen t-sca n base-packag="tdxy"/><tx:advice id="txAdvice" transaction-manage="transactionManager"><tx:attributes><!-事務(wù)執(zhí)行方式REQUIRED :指定當(dāng)前方法必需在事務(wù)
16、環(huán)境中運(yùn)行,如果當(dāng)前有事務(wù)環(huán)境就加入當(dāng)前正在執(zhí)行的事務(wù)環(huán)境,如果當(dāng)前沒有事務(wù),就新建一個事務(wù)。這是默認(rèn)值。-><tx:method name="create*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /><tx:method
17、name="update*" propagation="REQUIRED" /><tx:method name="remove*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="import*" propagation="REQUIRED" /> <!-指定
18、當(dāng)前方法以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就 把當(dāng)前事務(wù)掛起,等我以非事務(wù)的狀態(tài)運(yùn)行完,再繼續(xù)原來的事務(wù)。查詢定義即可read-only="true"表示只讀-><tx:method name="*" propagation="NOT_SUPPORTED" read-only ="true" />v/tx:attributes>v/tx:advice><!-定義切面,在 * tdxy.*service*Servicelmpl.*(.)中執(zhí)行有關(guān)的 hibernat e se
19、ssion的事務(wù)操作 -><aop:c on fig><aop:pointcut id="serviceOperation" expression="execution(* tdxy.*.serv ice.*Service.*(.)" /><aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" /> </aop:c on fig></bea ns>applicationCo
20、ntext.xml文件弓I用了一個 properties 文件 ,該文件也在 src 下,appCperties內(nèi)容可以自己定義?#數(shù)據(jù)庫連接信息 #1jdbc.user name = root2jdbc.password = admin3jdbc.url =4jdbc:mysql:/localhost:3306/tdxy?useU nicode=true&characterE ncodi ng=5UTF-8jdbc.driver = com.mysql.jdbc.Driver自己寫了一個 test用的basedaopackage tdxy.dao;import ja
21、va.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;/*Title: BaseDao.javaPackage tdxy.daoDescription: TODO(baseDao 數(shù)據(jù)庫操作實(shí)現(xiàn)類)author dapengdate 2014 年 5 月 7 日 下午 5:0
22、9:22version V1.0*/Repositorypublic class BaseDao /* Autowired自動裝配 相當(dāng)于get() set()*/Autowiredprotected SessionFactory sessionFactory;sessi on 事務(wù)sessi on/* gerCurrentSession會自動關(guān)閉session,使用的是當(dāng)前的* return*/public Session getSession() return sessionFactory.getCurrentSession();/* openSession需要手動關(guān)閉session意思是
23、打開一個新的* return*/public Session getNewSession() return sessionFactory.openSession();public void flush() getSessi on( ).flush();public void clear() getSessi on() .clear();/*/SuppressWar nin gs("rawtypes")public Long getTotalCount(Class c) Sessi on sessi on = getNewSessi on();String hql = &qu
24、ot;select count(*) from " + c.getName();*根據(jù)id查詢信息* param id* return*/SuppressWar nin gs("rawtypes")public Object load(Class c, String id) Sessi on sessi on = getSessi on();return session.get(c, id);/*獲取所有信息*Long count = (Long) sessi on. createQuery(hql). uniq ueResult(); sessi on. clo
25、se();return count != null ? count.longValue() : 0;/param bean* */public void delete(Object bean) *保存* param bean*/public void save(Object bean) try Sessi on sessi on = getNewSessi on();sessi on. save(bea n);sessi on .flush();sessi on. clear();sessi on. close(); catch (Exception e) e.pri ntStackTrace
26、();/*更新* param bean*/public void update(Object bean) Sessi on sessi on = getNewSessi on();sessi on. update(bea n);sessi on .flush();sessi on. clear();sessi on. close();/*刪除*Sessi on sessi on = getNewSessi on(); sessi on. delete(bea n);sessi on .flush();sessi on. clear();sessi on. close();/*根據(jù)ID刪除* p
27、aram c 類* param id ID*/SuppressWar nin gs( "rawtypes" ) public void delete(Class c, String id) Sessi on sessi on = getNewSessi on();Object obj = sessi on. get(c, id); sessi on. delete(obj);flush();clear();/*批量刪除* param c 類* param ids ID 集合*/SuppressWar nin gs( "rawtypes" ) public
28、 void delete(Class c, String ids) for (String id : ids) Object obj = getSessio n().get(c,id); if (obj != null) getSessi on() .delete(obj);不知大家有沒有注意applicatio nCon text.xml這樣一句代碼<!-設(shè)置自動創(chuàng)建|更新|驗(yàn)證數(shù)據(jù)庫表結(jié)構(gòu)->hiber nate.hbm2ddl.auto=update這個意思是 只要在實(shí)體bean指定了 entity,那么在數(shù)據(jù)庫會自動創(chuàng)建對應(yīng)的表和表結(jié)構(gòu) test用的一個實(shí)體 beanpac
29、kage tdxy.bea n;import java.io.Serializable;import javax.persistence.Entity;import javax.persistenced;/*ClassName: Userl nfoBea nDescription: TODO(用戶信息類)author dapengdate 2014 年 5 月 7 日 上午 12:13:44version V1.0*/En titypublic class UserInfoBean implements Serializable private static fin al lo ng seri
30、alVersio nUID = 7280747949998651159L;Idprivate String id;/*昵稱*/private String nickName;private String pwd;/*等級*/private String level;/*經(jīng)驗(yàn)值*/private String emValue;/*性別(0男1女)*/private String sex; private String birthday; private String qq; private String email;/*頭像*/private String img;/*所在地*/private
31、String address;/*簽名*/private String qmd;public String getld() return id;public void setId(String id) this.id = id;public String getNickName() return nickName;public void setNickName(String nickName) this. ni ckName = ni ckName;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd
32、 = pwd;public String getLevel() return level;public void setLevel(String level) thisevel = level;public String getEmValue() return emValue;public void setEmValue(String emValue) this.emValue = emValue;public String getSex() return sex;public void setSex(String sex) this.sex = sex;public String getBi
33、rthday() return birthday;public void setBirthday(String birthday) this.birthday = birthday;public String getQq() return qq;public void setQq(String qq) this.qq = qq;public String getEmail() return email;public void setEmail(String email) this.email = email;public String getlmg() return img;public void s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歺飲行業(yè)財務(wù)制度
- 針對企業(yè)小金庫財務(wù)制度
- 去稅務(wù)局完善財務(wù)制度
- 建立健全農(nóng)村財務(wù)制度
- 寺院財務(wù)制度范本
- 公文抄襲追責(zé)制度
- 公司有限責(zé)任制度
- 養(yǎng)老院老人安全防護(hù)制度
- 架空乘人裝置管理制度(3篇)
- 灌堰體施工方案(3篇)
- 膠體與界面化學(xué)
- 高溫熔融金屬企業(yè)安全知識培訓(xùn)
- 深圳益電通變頻器說明書TD90
- 2024至2030年中國公安信息化與IT行業(yè)發(fā)展形勢分析及運(yùn)行策略咨詢報告
- 機(jī)動車商業(yè)保險條款(2020版)
- 教育科學(xué)研究方法智慧樹知到期末考試答案章節(jié)答案2024年浙江師范大學(xué)
- 食管破裂的護(hù)理查房
- 民辦高中辦學(xué)方案
- 高教主賽道創(chuàng)業(yè)計(jì)劃書
- 一年級上冊生字練字帖(僅打印)
- 委托付款三方協(xié)議中英文版
評論
0/150
提交評論