锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
鍒氭墠鍋剁劧鐪嬪埌涓涓?/span> msn, achqian@hotmail.com, 鍦ㄦ妧鏈垪琛ㄤ腑 . 浼拌鏄釜鎼?/span> java 鐨?/span> . 錛堟垜寰堝皯涔卞姞 MSN 濂藉弸錛夈?/span>
鍚庢潵嫻忚浠栫殑鍗氬鎵嶇煡閬?/span>
榪欎釜浜哄氨鏄彂甯?/span>
webwork
鐨?/span>
浣滆咃紝寰堝悆鎯婂憖銆?/span>
鍘葷湅鐪嬩釜浜虹畝浠嬨?/span> 82 騫村嚭鐢熺殑銆?/span> 04 騫?/span> 6 鏈堝氨宸茬粡鍙戝竷浜?/span> 鏈鏂?/span> WebWork 鏁欑▼ 0.90 鐗堛?/span>
鐣欎笅鐨勫彧鏈夊悆鎯婂拰鎯充笉鍒般傚張涓涓妧鏈墰浜哄憖銆?/span>
鎴戞誨枩嬈㈡妸涓涓漢鐨勬垚灝卞拰騫撮緞鍘誨仛姣旇緝銆傛垜鏇撮挦浣╅偅浜涘勾榫勪笉鏄緢澶э紝鍗撮潪甯稿叿鏈夊紑鍙戝疄鍔涚殑紿佸嚮鎵嬨?/span>
涓嶈浜?/span> 聽 鍚戜粬浠涔犮?/span>
聽
Spring 妗嗘灦鏄竴涓垎灞傛灦鏋勶紝鐢?7 涓畾涔夎壇濂界殑妯″潡緇勬垚銆係pring 妯″潡鏋勫緩鍦ㄦ牳蹇冨鍣ㄤ箣涓婏紝鏍稿績瀹瑰櫒瀹氫箟浜嗗垱寤恒侀厤緗拰綆$悊 bean 鐨勬柟寮忥紝濡傚浘 1 鎵紺恒?/p>
鍥?1. Spring 妗嗘灦鐨?7 涓ā鍧?/b>
|聽聽 Spring 闈㈠悜鏂歸潰緙栫▼錛圓OP錛夊拰鎺у埗鍙嶈漿 錛圛OC錛?瀹瑰櫒
緇勬垚 Spring 妗嗘灦鐨勬瘡涓ā鍧楋紙鎴栫粍浠訛級閮藉彲浠ュ崟鐙瓨鍦紝鎴栬呬笌鍏朵粬涓涓垨澶氫釜妯″潡鑱斿悎瀹炵幇銆傛瘡涓ā鍧楃殑鍔熻兘濡備笅錛?
BeanFactory
錛屽畠鏄伐鍘傛ā寮忕殑瀹炵幇銆?font color="#0000ff">BeanFactory
浣跨敤鎺у埗鍙嶈漿 錛圛OC錛?妯″紡灝嗗簲鐢ㄧ▼搴忕殑閰嶇疆鍜屼緷璧栨ц鑼冧笌瀹為檯鐨勫簲鐢ㄧ▼搴忎唬鐮佸垎寮銆?
Spring 妗嗘灦鐨勫姛鑳藉彲浠ョ敤鍦ㄤ換浣?J2EE 鏈嶅姟鍣ㄤ腑錛屽ぇ澶氭暟鍔熻兘涔熼傜敤浜庝笉鍙楃鐞嗙殑鐜銆係pring 鐨勬牳蹇冭鐐規槸錛氭敮鎸佷笉緇戝畾鍒扮壒瀹?J2EE 鏈嶅姟鐨勫彲閲嶇敤涓氬姟鍜屾暟鎹闂璞°傛鏃犵枒闂紝榪欐牱鐨勫璞″彲浠ュ湪涓嶅悓 J2EE 鐜 錛圵eb 鎴?EJB錛夈佺嫭绔嬪簲鐢ㄧ▼搴忋佹祴璇曠幆澧冧箣闂撮噸鐢ㄣ?
銆浠g⒓:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/TestDB</value> </property> <property name="username"> <value>caterpillar</value> </property> <property name="password"> <value>123456</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" destroy-method="close"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="mappingResources"> <list> <value>User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> net.sf.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql"> true </prop> </props> </property> </bean> <bean id="userDAO" class="onlyfun.caterpillar.UserDAO"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> </beans>
銆銆鍦ㄩ欓倞UserDAO灝囩辜鎵胯嚜HibernateDaoSupport欏炲垾錛岄欏彲浠ュ公鎴戝戠渷鍘諱竴浜涚鐞唖essionFactory銆乭ibernateTemplate璩囨簮鐨勫伐浣滐紝鎴戝戝彧瑕佹敞鍏essionFactory灝卞ソ浜嗭紝鎴戝戠殑DAO璦▓濡備笅錛?
銆浠g⒓:
package onlyfun.caterpillar; import net.sf.hibernate.*; import org.springframework.orm.hibernate.*; import org.springframework.orm.hibernate.support.*; public class UserDAO extends HibernateDaoSupport { public void insertUser(final User user) { getHibernateTemplate().execute(new HibernateCallback() { publicObject doInHibernate(Session session) throws HibernateException { session.saveOrUpdate(user); returnnull; } }); } }
銆銆鍙娉ㄥ叆sessionFactory錛屼箣寰岃鐢╣etHibernateTemplate()灝卞彲浠ュ彇寰桯ibernateTemplate鐨勫渚嬶紝鎴戝戝埄鐢╟allback鏂規硶錛屽浣淗ibernateCallback浠嬮潰錛屽湪doInHibernate()涓茶瀛樺劜鎿嶄綔銆?
銆銆灝嶆柤綈″柈鐨勫瓨鍎叉搷浣滐紝鎴戝戠敋鑷沖彲浠ョ洿鎺ヤ嬌鐢℉ibernateTemplate鎵鎻愪緵鐨刦ind()銆乴oad()銆乻aveOrUpdate()銆乨elete()絳夋柟娉曪紝鑰屼笉鐢ㄤ嬌鐢╟allback錛屼緥濡傦細
銆浠g⒓:
package onlyfun.caterpillar; import org.springframework.orm.hibernate.support.*; public class UserDAO extends HibernateDaoSupport { public void insertUser(User user) { getHibernateTemplate().saveOrUpdate(user); } }
銆銆涓嶇敤鎳風枒錛岀▼寮忓氨鏄姝ょ啊鍠紝鎵鏈夌殑绱扮瘈閮借灝佽璧蜂締浜嗐?
銆銆HibernateTemplate涓彧鑳戒笩鍑簎nckecked渚嬪錛屽鏋滈渶瑕佽檿鐞哻hecked渚嬪錛屽墖鎮ㄥ彲浠ヤ嬌鐢ˋOP Interceptor渚嗗彇浠ibernateTemplate錛屽緸鑰屽彇浠allback鏂規硶錛屽湪鍙冭冩墜鍐婁腑鏈変粙绱瑰浣曢厤緗紝閫欓倞瑜囪=閬庝締浠ヤ究鍙冭冿細
銆浠g⒓:
.... <bean id="myHibernateInterceptor" class="org.springframework.orm.hibernate.HibernateInterceptor"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductDaoTarget" class="product.ProductDaoImpl"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductDao" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>product.ProductDao</value> </property> <property name="interceptorNames"> <list> <value>myHibernateInterceptor</value> <value>myProductDaoTarget</value> </list> </property> </bean> ....
銆浠g⒓:
public class ProductDaoImpl extends HibernateDaoSupport implements ProductDao { public List loadProductsByCategory(finalString category) throws MyException { Session session = SessionFactoryUtils.getSession(getSessionFactory(), false); try { List result = session.find( "from test.Product product where product.category=?", category, Hibernate.STRING); if (result == null) { thrownew MyException("invalid search result"); } return result; } catch (HibernateException ex) { throw SessionFactoryUtils.convertHibernateAccessException(ex); } } }