聽 棣栧厛紜畾灝嗚Proxy鐨勭洰鏍囷紝鍦⊿pring涓粯璁ら噰鐢↗DK涓殑dynamic proxy錛屽畠鍙兘澶熷疄鐜版帴鍙g殑浠g悊錛屽鏋滄兂瀵圭被榪涜浠g悊鐨勮瘽錛岄渶瑕侀噰鐢–GLIB鐨刾roxy銆傛樉鐒訛紝閫夋嫨鈥滅紪紼嬪埌鎺ュ彛鈥濇槸鏇存槑鏅虹殑鍋氭硶錛屼笅闈㈡槸灝嗚浠g悊鐨勬帴鍙o細
聽 public interface FooInterface {
聽聽聽 public void printFoo();
聽聽聽 public void dummyFoo();
聽 }
聽
聽 浠ュ強鍏朵竴涓畝鍗曠殑瀹炵幇錛?br />聽
聽 public class FooImpl implements FooInterface {
聽聽聽 public void printFoo() {
聽聽聽聽聽 System.out.println("In FooImpl.printFoo");
聽聽聽 }
聽聽聽 public void dummyFoo() {
聽聽聽聽聽 System.out.println("In FooImpl.dummyFoo");
聽聽聽 }
聽 }
聽
聽 鎺ヤ笅鏉ュ垱寤轟竴涓狝dvice錛屽湪Spring涓敮鎸丄round,Before,After returning鍜孴hrows鍥涚Advice錛岃繖閲屽氨浠ョ畝鍗曠殑Before Advice涓句緥錛?br />聽
聽 public class PrintBeforeAdvice implements MethodBeforeAdvice {
聽聽聽 public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
聽聽聽聽聽 System.out.println("In PrintBeforeAdvice");
聽聽聽 }
聽 }
聽
聽 鏈変簡鑷繁鐨刡usiness interface鍜宎dvice錛屽墿涓嬬殑灝辨槸濡備綍鍘昏閰嶅畠浠簡錛岄鍏堝埄鐢≒roxyFactory浠ョ紪紼嬫柟寮忓疄鐜幫紝濡備笅錛?br />聽
聽 public class AopTestMain {
聽聽聽 public static void main(String[] args) {
聽聽聽聽聽 FooImpl fooImpl = new FooImpl();
聽聽聽聽聽 PrintBeforeAdvice myAdvice = new PrintBeforeAdvice();
聽聽聽聽聽
聽聽聽聽聽 ProxyFactory factory = new ProxyFactory(fooImpl);
聽聽聽聽聽 factory.addBeforeAdvice(myAdvice);
聽聽聽聽聽 FooInterface myInterface = (FooInterface)factory.getProxy();
聽聽聽聽聽 myInterface.printFoo();
聽聽聽聽聽 myInterface.dummyFoo();
聽聽聽 }
聽 }
聽
聽 鐜板湪鎵ц紼嬪簭錛岀濂囩殑緇撴灉灝卞嚭鐜頒簡錛?br />聽
聽 In PrintBeforeAdvice
聽 In FooImpl.printFoo
聽 In PrintBeforeAdvice
聽 In FooImpl.dummyFoo
聽
聽 铏界劧榪欐牱鑳戒綋浼氬埌Spring涓瑼OP鐨勭敤娉曪紝浣嗚繖鍐充笉鏄煎緱鎺ㄨ崘鐨勬柟娉曪紝鏃㈢劧浣跨敤浜哠pring錛屽湪ApplicationContext涓閰嶆墍闇瑕?鐨刡ean鎵嶆槸鏈浣崇瓥鐣ワ紝瀹炵幇涓婇潰鐨勫姛鑳藉彧闇瑕佸啓涓畝鍗曠殑applicationContext灝卞彲浠ヤ簡錛屽涓嬶細
聽
聽 <?xml version="1.0" encoding="UTF-8"?>
聽 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
聽聽聽 "http://www.springframework.org/dtd/spring-beans.dtd">
聽 <beans>
聽聽聽 <description>The aop application context</description>
聽聽聽 <bean id="fooTarget" class="FooImpl"/>
聽聽聽 <bean id="myAdvice" class="PrintBeforeAdvice"/>
聽聽 聽<bean id="foo" class="org.springframework.aop.framework.ProxyFactoryBean">
聽聽聽聽 <property name="proxyInterfaces">
聽聽聽聽聽聽 <value>FooInterface</value>
聽聽聽聽 </property>
聽聽聽聽聽<property name="target">
聽聽聽聽聽聽 <ref local="fooTarget"/>
聽聽聽聽 </property>
聽聽聽聽 <property name="interceptorNames">
聽聽聽聽聽聽 <list>
聽聽聽聽聽聽聽聽 <value>myAdvice</value>
聽聽聽聽聽聽 </list>
聽聽聽聽 </property>
聽聽聽 </bean>
聽 </beans>
聽 褰撶劧錛宮ain涓殑浠g爜涔熻榪涜鐩稿簲鐨勪慨鏀癸細
聽聽聽聽
聽 public static void main(String[] args) {
聽聽聽 ClassPathXmlApplicationContext context = new聽
聽聽聽聽聽聽聽聽聽聽聽聽聽ClassPathXmlApplicationContext("applicationContext.xml");
聽聽聽 FooInterface foo = (FooInterface)context.getBean("foo");
聽聽聽 foo.printFoo();
聽聽聽 foo.dummyFoo();
聽 }
聽
聽 鐜板湪榪愯涓涓嬶紝緇撴灉灝嗗拰涓婇潰鐨勮繍琛岀粨鏋滃畬鍏ㄤ竴鏍鳳紝榪欐牱鏄笉鏄洿浼橀泤錛熷綋闇瑕佹洿鏀瑰疄鐜版椂錛屽彧闇瑕佷慨鏀歸厤緗枃浠跺氨鍙互浜嗭紝紼嬪簭涓殑浠g爜涓嶉渶浠諱綍鏀瑰姩銆?br />聽
聽 浣嗘槸錛岃繖鏃跺欎細鍙戠幇琚玴roxy鐨刼bject涓殑鎵鏈夋柟娉曡皟鐢ㄦ椂閮藉皢榪愯advice涓殑before錛岃繖鏄劇劧涓嶈兘婊¤凍緇濆ぇ澶氭暟鎯呭喌涓嬬殑闇瑕侊紝姝ゆ椂錛屽彧 闇鍊熺敤Advisor灝卞彲浠ヤ簡錛屽綋鐒惰鍦ˋdvisor涓埄鐢╬attern璁劇疆濂藉摢浜涙柟娉曢渶瑕乤dvice錛屾洿鏀筧pplicationContext 濡備笅錛?br />聽
聽 <?xml version="1.0" encoding="UTF-8"?>
聽 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
聽聽聽 "http://www.springframework.org/dtd/spring-beans.dtd">
聽 <beans>
聽聽聽 <description>The springeva application context</description>
聽聽 聽<bean id="fooTarget" class="FooImpl"/>
聽聽聽 <bean id="printBeforeAdvice" class="PrintBeforeAdvice"/>
聽聽聽 <bean id="myAdvisor"
聽聽聽聽聽聽聽聽聽 class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
聽聽聽聽聽 <property name="advice">
聽聽聽聽聽聽聽 <ref local="printBeforeAdvice"/>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="pattern">
聽聽聽聽聽聽聽 <value>.*print.*</value>
聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <bean id="foo" class="org.springframework.aop.framework.ProxyFactoryBean">
聽聽聽聽聽 <property name="proxyInterfaces">
聽聽聽聽聽聽聽聽<value>FooInterface</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="target">
聽聽聽聽聽聽聽 <ref local="fooTarget"/>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="interceptorNames">
聽聽聽聽聽聽聽 <list>
聽聽聽聽聽聽聽聽聽 <value>myAdvisor</value>
聽聽聽聽聽聽聽 </list>
聽聽聽聽聽聽</property>
聽聽聽 </bean>
聽 </beans>
聽 涓葷▼搴忎笉闇榪涜浠諱綍淇敼錛岃繍琛岀粨鏋滃凡緇忓彉鏍蜂簡錛?/p>
聽 In PrintBeforeAdvice
聽 In FooImpl.printFoo
聽 In FooImpl.dummyFoo
聽
聽 鑷蟲錛屽簲璇ュ凡緇忕悊瑙d簡Spring涓瑼OP鐨勪嬌鐢ㄦ柟娉曪紝褰撶劧Spring涓瑼OP鏈閲嶈鐨勫簲鐢ㄦ槸Transaction Manager錛屼婦涓繖鏂歸潰鐨刟pplicationContext渚嬪瓙鐪嬬湅錛?br />聽
聽 <?xml version="1.0" encoding="UTF-8"?>
聽 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd">
聽 <beans>
聽聽聽 <bean id="propertyConfigurer"聽聽聽
聽聽聽聽聽聽聽聽 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
聽聽聽聽聽 <property name="location">
聽聽聽聽聽聽聽 <value>/WEB-INF/jdbc.properties</value>
聽聽聽聽聽聽</property>
聽聽 聽</bean>
聽聽聽 <bean id="dataSource"
聽聽聽聽聽聽聽聽聽 class="org.springframework.jdbc.datasource.DriverManagerDataSource">
聽聽聽聽聽 <property name="driverClassName">
聽聽聽聽聽聽聽 <value>${jdbc.driverClassName}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽聽<property name="url">
聽聽聽聽聽聽聽 <value>${jdbc.url}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="username">
聽聽聽聽聽聽聽 <value>${jdbc.username}</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="password">
聽聽聽聽聽聽聽 <value>${jdbc.password}</value>
聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽 聽<bean id="sessionFactory"
聽聽聽聽聽聽聽聽聽 class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
聽聽聽聽聽 <property name="dataSource">
聽聽聽聽聽聽聽 <ref local="dataSource"/>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="mappingResources">
聽聽聽聽聽聽聽 <value>smartmenu.hbm.xml</value>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="hibernateProperties">
聽聽聽聽聽聽聽 <props>
聽聽聽聽聽聽聽聽聽 <prop key="hibernate.dialect">${hibernate.dialect}</prop>
聽聽聽聽聽聽聽 </props>
聽聽聽聽聽 </property>
聽聽聽 </bean>
聽
聽聽聽 <bean id="transactionManager"聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽 class="org.springframework.orm.hibernate.HibernateTransactionManager">
聽聽聽聽聽 <property name="sessionFactory">
聽聽聽聽聽聽聽 <ref local="sessionFactory"/>
聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <bean id="smartmenuTarget" class="SmartMenuHibernate">
聽聽聽聽聽 <property name="sessionFactory">
聽聽聽聽聽聽聽 <ref local="sessionFactory"/>
聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽 聽<bean id="smartMenu"
聽聽聽聽聽聽聽 class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
聽聽聽聽聽 <property name="transactionManager">
聽聽聽聽聽聽聽 <ref local="transactionManager"/>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="target">
聽聽聽聽聽聽聽 <ref local="smartmenuTarget"/>
聽聽聽聽聽 </property>
聽聽聽聽聽 <property name="transactionAttributes">
聽聽聽聽聽聽聽 <props>
聽聽聽聽聽聽聽聽聽 <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
聽聽聽聽聽聽聽聽聽 <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
聽聽聽聽聽聽聽 </props>
聽聽聽聽聽 </property>
聽聽聽 </bean>
聽 </beans>
聽
聽 瑕佹兂褰誨簳鐞嗚ВSpring鐨凙OP錛屾渶濂借繕鏄鐪嬬湅婧愮爜錛屽紑婧愬氨鏄ソ鍟婏紒
java浠g爜:聽 |
package infoweb.dao; import java.util.List; import java.util.Iterator; import infoweb.pojo.Info; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Query; import net.sf.hibernate.Session; import org.springframework.orm.hibernate.HibernateCallback; import org.springframework.orm.hibernate.support.HibernateDaoSupport; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author 孌墊椽鏉?br />* @version 1.0 */ publicclass InfoDAOImpl extends HibernateDaoSupport implements IInfoDAO { 聽 /** 聽 聽* 鏋勯犲嚱鏁?br />聽 聽*/ 聽 public InfoDAOImpl(){ 聽聽聽 super(); 聽 } 聽 /** 聽 聽* 澧炲姞璁板綍 聽 聽* @param info Info 聽 聽*/ 聽 publicvoid setInfo(Info info)throwsException{ 聽聽聽 getHibernateTemplate().save(info); 聽 } 聽 /** 聽 聽* 閫氳繃ID鍙栧緱璁板綍 聽 聽* @param id String 聽 聽* @return Info 聽 聽*/ 聽 public Info getInfoById(String id)throwsException{ 聽聽聽 Info info = (Info) getHibernateTemplate().load(Info.class, id); 聽聽聽 return info; 聽 } 聽 /** 聽 聽* 淇敼璁板綍 聽 聽* @param Info info 聽 聽*/ 聽 publicvoid modifyInfo(Info info)throwsException{ 聽聽聽 getHibernateTemplate().update(info); 聽 } 聽 /** 聽 聽* 鍒犻櫎璁板綍 聽 聽* @param Info info 聽 聽*/ 聽 publicvoid removeInfo(Info info)throwsException{ 聽聽聽 getHibernateTemplate().delete(info); 聽 } 聽 //////////////////////////////////////////////////////// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 /////浠ヤ笅閮ㄤ喚涓嶅甫瀹℃牳鍔熻兘聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 //////////////////////////////////////////////////////// 聽 /** 聽 聽* 鍙栬褰曟繪暟 聽 聽* @return int 聽 聽*/ 聽 publicint getInfosCount()throwsException{ 聽聽聽 int count = 0; 聽聽聽 String queryString = "select count(*) from Info"; 聽聽聽 count = ((Integer) getHibernateTemplate().iterate(queryString).next()). 聽聽聽聽聽聽聽聽聽聽聽 intValue(); 聽聽聽 return count; 聽 } 聽 /** 聽 聽* 鍙栨墍鏈夎褰曢泦鍚?br />聽 聽* @return Iterator 聽 聽*/ 聽 publicIterator getAllInfos()throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info order by info.id desc"; 聽聽聽 List list = getHibernateTemplate().find(queryString); 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 鍙栬褰曢泦鍚?br />聽 聽* @return Iterator 聽 聽* @param int position, int length 聽 聽*/ 聽 publicIterator getInfos(int position, int length)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info order by info.id desc"; 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁劇疆娓告爣鐨勮搗濮嬬偣 聽聽聽 query.setFirstResult(position); 聽聽聽 //璁劇疆娓告爣鐨勯暱搴?/span> 聽聽聽 query.setMaxResults(length); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 鍙栫涓鏉¤褰?br />聽 聽* @throws Exception 聽 聽* @return Station 聽 聽*/ 聽 public Info getFirstInfo()throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 Info info = null; 聽聽聽 String queryString = "select info from Info as info order by info.id desc"; 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 if(iterator.hasNext()){ 聽聽聽聽聽 info = (Info) iterator.next(); 聽聽聽 } 聽聽聽 return info; 聽 } 聽 /** 聽 聽* 鍙栨渶鍚庝竴鏉¤褰?br />聽 聽* @throws Exception 聽 聽* @return Station 聽 聽*/ 聽 public Info getLastInfo()throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 Info info = null; 聽聽聽 String queryString = "select info from Info as info order by info.id asc"; 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 if(iterator.hasNext()){ 聽聽聽聽聽 info = (Info) iterator.next(); 聽聽聽 } 聽聽聽 return info; 聽 } 聽 //////////////////////////////////////////////////////// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 ///// 浠ヤ笅閮ㄤ喚琛ㄤ腑瑕佹湁鐗瑰畾瀛楁鎵嶈兘脮類卞惄璇佃ⅹ 鐗抽媹鎾曟帹絎犵 聽 聽/// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 //////////////////////////////////////////////////////// 聽 /** 聽 聽* 鍙栫鍚堟潯浠惰褰曟繪暟, [琛ㄤ腑瑕佹湁 isperson 瀛楁] 聽 聽* @return int 聽 聽* @param int isPerson 聽 聽*/ 聽 publicint getInfosCountByIsperson(int isPerson)throwsException{ 聽聽聽 int count = 0; 聽聽聽 String queryString = 聽聽聽聽聽聽聽 "select count(*) from Info as info where info.isperson =" + isPerson; 聽聽聽 count = ((Integer) getHibernateTemplate().iterate(queryString).next()). 聽聽聽聽聽聽聽聽聽聽聽 intValue(); 聽聽聽 return count; 聽 } 聽 /** 聽 聽* 鍙栨墍鏈夌鍚堟潯浠惰褰曢泦鍚? 妯$硦鏌ヨ鏉′歡.[琛ㄤ腑瑕佹湁 isperson 瀛楁] 聽 聽* @return Iterator 聽 聽* @param int isPerson 聽 聽*/ 聽 publicIterator getAllInfosByIsperson(int isPerson)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info where info.isperson =" + 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽isPerson + " order by info.id desc"; 聽聽聽 List list = getHibernateTemplate().find(queryString); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 鍙栫鍚堟潯浠惰褰曢泦鍚? 妯$硦鏌ヨ鏉′歡.[琛ㄤ腑瑕佹湁 isperson 瀛楁] 聽 聽* @return Iterator 聽 聽* @param int isPerson,int position, int length 聽 聽*/ 聽 publicIterator getInfosByIsperson(int isPerson, int position, int length)throws 聽聽聽聽聽 Exception{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info where info.isperson =" + 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽isPerson + " order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁劇疆娓告爣鐨勮搗濮嬬偣 聽聽聽 query.setFirstResult(position); 聽聽聽 //璁劇疆娓告爣鐨勯暱搴?/span> 聽聽聽 query.setMaxResults(length); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 //////////////////////////////////////////////////////// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 ///// 浠ヤ笅閮ㄤ喚琛ㄤ腑瑕佹湁鐗瑰畾瀛楁鎵嶈兘脮類卞惄璇佃ⅹ 聽鏌ヨ閮ㄤ喚聽聽聽聽聽 /// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 /////////////////////////////////////////////////////// 聽 /** 聽 聽* 鍙栫鍚堟潯浠惰褰曟繪暟, 妯$硦鏌ヨ鏉′歡.[琛ㄤ腑瑕佹湁 title 瀛楁] 聽 聽* @return int 聽 聽* @param String text 聽 聽*/ 聽 publicint getInfosCount(String text)throwsException{ 聽聽聽 int count = 0; 聽聽聽 count = ((Integer) getHibernateTemplate().iterate( 聽聽聽聽聽聽聽 "select count(*) from Info as info where info.title like '%" + text + 聽聽聽聽聽聽聽 "%'").next()).intValue(); 聽聽聽 return count; 聽 } 聽 /** 聽 聽* 鍙栨墍鏈夌鍚堟潯浠惰褰曢泦鍚? 妯$硦鏌ヨ鏉′歡.[琛ㄤ腑瑕佹湁 title 瀛楁] 聽 聽* @return Iterator 聽 聽* @param String text 聽 聽*/ 聽 publicIterator getAllInfos(String text)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = 聽聽聽聽聽聽聽 " select info from Info as info where info.title like '%" + text + 聽聽聽聽聽聽聽 "%' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 鍙栫鍚堟潯浠惰褰曢泦鍚? 妯$硦鏌ヨ鏉′歡.[琛ㄤ腑瑕佹湁 title 瀛楁] 聽 聽* @return Iterator 聽 聽* @param String text,int position, int length 聽 聽*/ 聽 publicIterator getInfos(String text, int position, int length)throws 聽聽聽聽聽 Exception{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = 聽聽聽聽聽聽聽 " select info from Info as info where info.title like '%" + text + 聽聽聽聽聽聽聽 "%' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁劇疆娓告爣鐨勮搗濮嬬偣 聽聽聽 query.setFirstResult(position); 聽聽聽 //璁劇疆娓告爣鐨勯暱搴?/span> 聽聽聽 query.setMaxResults(length); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 //////////////////////////////////////////////////////// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 ///// 浠ヤ笅閮ㄤ喚琛ㄤ腑瑕佹湁鐗瑰畾瀛楁鎵嶈兘脮類卞惄璇佃ⅹ 鐘犫拤宓枡璨?聽聽聽 /// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 //////////////////////////////////////////////////////// 聽 /** 聽 聽* 鍙栫鍚堟潯浠惰褰曟繪暟.[ 琛ㄤ腑瑕佹湁 registername 瀛楁] 聽 聽* @return int 聽 聽* @param String text 聽 聽*/ 聽 publicint getInfosCountByRegisterName(String registerName)throwsException{ 聽聽聽 int count = 0; 聽聽聽 count = ((Integer) getHibernateTemplate().iterate( 聽聽聽聽聽聽聽 "select count(*) from Info as info where info.registername = '" + 聽聽聽聽聽聽聽 registerName + "'").next()).intValue(); 聽聽聽 return count; 聽 } 聽 /** 聽 聽* 閫氳繃娉ㄥ唽鍚嶅彇寰椾竴鏉¤褰?濡傛湁澶氭潯,鍙彇絎竴鏉?[琛ㄤ腑瑕佹湁 registername瀛楁] 聽 聽* @param registername String 聽 聽* @return Info 聽 聽*/ 聽 public Info getInfoByRegisterName(String registerName)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 Info info = null; 聽聽聽 String queryString = 聽聽聽聽聽聽聽 " select info from Info as info where info.registername='" + 聽聽聽聽聽聽聽 registerName + "' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 if(iterator.hasNext()){ 聽聽聽聽聽 info = (Info) iterator.next(); 聽聽聽 } 聽聽聽 return info; 聽 } 聽 /** 聽 聽* 閫氳繃娉ㄥ唽鍚嶅彇寰楁墍鏈夎褰曢泦鍚?[琛ㄤ腑瑕佹湁 registername瀛楁] 聽 聽* @param registername String 聽 聽* @return Iterator 聽 聽*/ 聽 publicIterator getAllInfosByRegisterName(String registerName)throws 聽聽聽聽聽 Exception{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = 聽聽聽聽聽聽聽 " select info from Info as info where info.registername='" + 聽聽聽聽聽聽聽 registerName + "' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 閫氳繃娉ㄥ唽鍚嶅彇寰楄褰曞垪琛?[琛ㄤ腑瑕佹湁 registername瀛楁] 聽 聽* @param registername String 聽 聽* @return Iterator 聽 聽*/ 聽 publicIterator getInfosByRegisterName(String registerName, int position, 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽int length)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = 聽聽聽聽聽聽聽 " select info from Info as info where info.registername='" + 聽聽聽聽聽聽聽 registerName + "' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁劇疆娓告爣鐨勮搗濮嬬偣 聽聽聽 query.setFirstResult(position); 聽聽聽 //璁劇疆娓告爣鐨勯暱搴?/span> 聽聽聽 query.setMaxResults(length); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 //////////////////////////////////////////////////////// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 ///// 浠ヤ笅閮ㄤ喚琛ㄤ腑瑕佹湁鐗瑰畾瀛楁鎵嶈兘脮類卞惄璇佃ⅹ 聽 鐘戦妗跺┑闂?聽 聽/// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 //////////////////////////////////////////////////////// 聽 /** 聽 聽* 鍙栬褰曟繪暟.[ 琛ㄤ腑瑕佹湁 board_id 瀛楁] 聽 聽* @return int 聽 聽* @param String boardId 聽 聽*/ 聽 publicint getInfosCountByBoard(String boardId)throwsException{ 聽聽聽 int count = 0; 聽聽聽 count = ((Integer) getHibernateTemplate().iterate( 聽聽聽聽聽聽聽 "select count(*) from Info as info where info.boardId = '" + boardId + 聽聽聽聽聽聽聽 "'").next()).intValue(); 聽聽聽 return count; 聽 } 聽 /** 聽 聽* 閫氳繃鐗堝潡鍚嶅彇寰楁墍鏈夎褰曢泦鍚?[琛ㄤ腑瑕佹湁 board_id瀛楁] 聽 聽* @param BoardId String 聽 聽* @return Iterator 聽 聽*/ 聽 publicIterator getAllInfosByBoard(String boardId)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info where info.boardId='" + 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽boardId + "' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 閫氳繃鐗堝潡鍚嶅彇寰楄褰曞垪琛?[琛ㄤ腑瑕佹湁 board_id瀛楁] 聽 聽* @param BoardId String 聽 聽* @return Iterator 聽 聽*/ 聽 publicIterator getInfosByBoard(String boardId, int position, int length)throws 聽聽聽聽聽 Exception{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info where info.boardId='" + 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽boardId + "' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁劇疆娓告爣鐨勮搗濮嬬偣 聽聽聽 query.setFirstResult(position); 聽聽聽 //璁劇疆娓告爣鐨勯暱搴?/span> 聽聽聽 query.setMaxResults(length); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 /** 聽 聽* 鍙栫鍚堟潯浠惰褰曟繪暟.[ 琛ㄤ腑瑕佹湁 board_id 瀛楁,title]聽 妯$硦鏌ヨtitle 聽 聽* @return int 聽 聽* @param String boardId ,String text 聽 聽*/ 聽 publicint getInfosCountByBoard(String boardId, String text)throwsException{ 聽聽聽 int count = 0; 聽聽聽 count = ((Integer) getHibernateTemplate().iterate( 聽聽聽聽聽聽聽 "select count(*) from Info as info where info.boardId='" + boardId + 聽聽聽聽聽聽聽 "' and info.title like '%" + text + "%'").next()).intValue(); 聽聽聽 return count; 聽 } 聽 /** 聽 聽* 閫氳繃鐗堝潡鍚嶅彇寰楄褰曞垪琛?[琛ㄤ腑瑕佹湁 board_id瀛楁]聽 妯$硦鏌ヨtitle 聽 聽* @param String boardID,int position, int length 聽 聽* @return Iterator 聽 聽*/ 聽 publicIterator getInfosByBoard(String boardId, int position, int length, 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String text)throwsException{ 聽聽聽 Iterator iterator = null; 聽聽聽 String queryString = " select info from Info as info where info.boardId='" + 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽boardId + "' and info.title like '%" + text + 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽"%' order by info.id desc"; 聽聽聽 //鍒涘緩鏌ヨ 聽聽聽 Query query = getHibernateTemplate().createQuery(getSession(), queryString); 聽聽聽 //璁劇疆娓告爣鐨勮搗濮嬬偣 聽聽聽 query.setFirstResult(position); 聽聽聽 //璁劇疆娓告爣鐨勯暱搴?/span> 聽聽聽 query.setMaxResults(length); 聽聽聽 //璁板綍鐢熸垚 聽聽聽 List list = query.list(); 聽聽聽 //鎶婃煡璇㈠埌鐨勭粨鏋滄斁鍏ヨ凱浠e櫒 聽聽聽 iterator = list.iterator(); 聽聽聽 return iterator; 聽 } 聽 //////////////////////////////////////////////////////// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 /////浠ヤ笅閮ㄤ喚甯︽湁瀹℃牳鍔熻兘聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 /////聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /// 聽 //////////////////////////////////////////////////////// 聽 /** 聽 聽* 鍙栬褰曟繪暟 聽 聽* @return int 聽 聽* @param int isAuditing 聽 聽*/ 聽 publicint getInfosCount(int isAuditing)throwsException{ 聽聽聽 |
Spring Framework鏈寰椾互鍑哄悕鐨勬槸涓嶩ibernate鐨勬棤緙濋摼鎺ワ紝鍩烘湰涓婄敤Spring錛屽氨浼氱敤Hibernate銆傚彲鎯滅殑鏄疭pring鎻愪緵鐨凥ibernateTemplate鍔熻兘鏄懼緱涓嶅錛屼嬌鐢ㄨ搗鏉ヤ篃涓嶆槸寰堟柟渚褲傛垜浠紪紼嬪簭鏃訛紝涓鑸厛鍐橞usinessService錛岀敱BusinessService璋僁AO鏉ユ墽琛屽瓨鍌紝鍦ㄨ繖鏂歸潰Spring娌℃湁寰堝ソ鐨勪緥瀛愶紝閫犳垚鐪熸鎯崇敤濂藉畠錛屽茍涓嶅鏄撱?/font> 鎴戜滑鐨勬濊礬鏄厛鍐欎竴涓狟aseDao錛屼豢鐓ibernateTemplate錛屽皢鍩烘湰鍔熻兘鍏ㄩ儴瀹炵幇錛?/font> public class BaseDao extends HibernateDaoSupport{ 聽聽聽 private Log log = LogFactory.getLog(getClass());
聽聽聽 public Session openSession() {
聽聽聽 public Object get(Class entityClass, Serializable id) throws DataAccessException {
聽聽聽 public Serializable create(Object entity) throws DataAccessException { ... 鍏跺畠鐨凞AO錛屼粠BaseDao緇ф壙鍑烘潵錛岃繖鏍峰啓鍏朵粬鐨凞AO錛屼唬鐮佸氨浼氬緢灝戙?/font> 浠嶣aseDao緇ф壙鍑烘潵EntityDao錛屼笓闂ㄨ礋璐d竴鑸疄浣撶殑鍩烘湰鎿嶄綔錛屼細鏇存柟渚褲?/font> public interface EntityDao { 聽聽聽 public Object get(Class entityClass, Serializable id) throws DataAccessException; 聽聽聽 public Object load(Class entityClass, Serializable id) throws DataAccessException;
聽聽聽 public Serializable create(Object entity) throws DataAccessException;
/** } 涓轟簡Transaction鐨勬帶鍒訛紝閲囩敤AOP鐨勬柟寮忥細 public interface EntityManager { 聽聽聽 public Object get(Class entityClass, Serializable id); 聽聽聽 public Object load(Class entityClass, Serializable id);
聽聽聽 public Serializable create(Object entity); }
/** 聽聽聽 private EntityDao entityDao;
聽聽聽 public void setEntityDao(EntityDao entityDao) {
聽聽聽 public Object get(Class entityClass, Serializable id) {
聽聽聽 public Object load(Class entityClass, Serializable id) { } 榪欐牱鎴戜滑灝辨湁浜嗕竴涓氱敤鐨凥ibernate瀹炰綋寮曟搸錛屽彲浠ュ浠諱綍Hibernate瀹炰綋瀹炵幇鍩烘湰鐨勫鍔犮佷慨鏀廣佸垹闄ゃ佹煡璇㈢瓑銆?/font> 鍏跺畠鐨凚usinessService灝卞彲浠ョ戶鎵縀ntityManager錛屽揩閫熷疄鐜頒笟鍔¢昏緫銆?/font> 鍏蜂綋XML閰嶇疆濡備笅錛?/font>
聽<!-- Oracle JNDI DataSource for J2EE environments -->
聽<!-- Hibernate SessionFactory for Oracle -->
聽<!-- AOP DAO Intecepter -->
聽聽聽聽聽聽聽 <bean id="entityDaoTarget" class="com.gpower.services.entity.dao.EntityDaoImpl">
聽聽聽聽聽聽聽 <bean id="entityDao" class="org.springframework.aop.framework.ProxyFactoryBean">
聽<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
聽<!-- Transaction manager that delegates to JTA (for a transactional JNDI DataSource) -->
聽<!-- Transactional proxy for the Application primary business object -->
聽聽聽聽聽聽聽 <bean id="entityManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> |
![]() |