成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ssh整合分解

移動開發 Android
Spring整合Hibernate,是做了一個很大的調整的,因為spring可以把管理Hibernate的工作都做了,以前的hibernate.cfg.xml文件都去掉了,而將這些內容都交給了spring來管理了。

一、 Spring+Hibernate整合:
Spring整合Hibernate,是做了一個很大的調整的,因為spring可以把管理Hibernate的工作都做了,以前的hibernate.cfg.xml文件都去掉了,而將這些內容都交給了spring來管理了。
1、 applicationContext.xml文件中應該配置如下內容:
Java代碼

  1. //配置數據連接類  
  2. <bean id=“dataSource”  
  3. class=“org.apache.commons.dbcp.BasicDataSource”>  
  4. <property name=“driverClassName”  
  5. value=“org.gjt.mm.mysql.Driver”>  
  6. </property>  
  7. <property name=“url” value=“jdbc:mysql://localhost:3306/test”></property>  
  8. <property name=“username” value=“root”></property>  
  9. </bean>  
  10. //配置session工廠類  
  11. <bean id=“sessionFactory”  
  12. class=“org.springframework.orm.hibernate3.LocalSessionFactoryBean”>  
  13. <property name=“dataSource”>  
  14. <ref bean=“dataSource” />  
  15. </property>  
  16. <property name=“hibernateProperties”>  
  17. <props>  
  18. <prop key=“hibernate.dialect”>  
  19. org.hibernate.dialect.MySQLDialect  
  20. </prop>  
  21. <prop key=“hibernate.show_sql”>true</prop>  
  22. </props>  
  23. </property>  
  24. <property name=“mappingResources”>  
  25. <value>com/hejianjiao/vo/Person.hbm.xml</value>  
  26. </property>  
  27. </bean>  
  28. //配置數據連接類 
  29. <bean id="dataSource" 
  30.    class="org.apache.commons.dbcp.BasicDataSource"
  31.    <property name="driverClassName" 
  32.     value="org.gjt.mm.mysql.Driver"
  33.    </property> 
  34.    <property name="url" value="jdbc:mysql://localhost:3306/test"></property> 
  35.    <property name="username" value="root"></property> 
  36. </bean> 
  37. //配置session工廠類 
  38. <bean id="sessionFactory" 
  39. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
  40.    <property name="dataSource"
  41.     <ref bean="dataSource" /> 
  42.    </property> 
  43.    <property name="hibernateProperties"
  44.     <props> 
  45.      <prop key="hibernate.dialect"
  46.       org.hibernate.dialect.MySQLDialect 
  47.      </prop> 
  48.      <prop key="hibernate.show_sql">true</prop> 
  49.     </props> 
  50.    </property> 
  51.    <property name="mappingResources"
  52.    <value>com/hejianjiao/vo/Person.hbm.xml</value> 
  53.    </property> 
  54. </bean> 

2、可以使用spring中的HibernateDAOSupport與HibernateTemplate類來進行數據持久化操作:
A、HibernateDAOSupport類中定義了對session、sessionFactory的操作方法與getHibernateTemplate方法來獲得一個HibernateTemplate實例;
B、HibernateTemplate類中定義了對數據持久化的各種封裝的方法,我們可以用它來對數據進行操作。
因此在使用時,我們可以繼承HibernateDAOSupport類,然后實例化HibernateTemplate類來進行數據持久化。
二、 Spring+Struts2整合:

1、spring配置在web.xml文件中的上下文監聽器:
Java代碼

  1. <context-param>  
  2. <param-name>contextConfigLocation</param-name>  
  3. <param-value>/WEB-INF/applicationContext*.xml</param-value>  
  4. </context-param> 
  5.  
  6. <listener>  
  7. <listener-class>org.springframwork.web.content.ContextLoaderListener</listener-class>  
  8. </listener>  
  9. <context-param> 
  10. <param-name>contextConfigLocation</param-name> 
  11. <param-value>/WEB-INF/applicationContext*.xml</param-value> 
  12. </context-param> 
  13.  
  14. <listener> 
  15. <listener-class>org.springframwork.web.content.ContextLoaderListener</listener-class
  16. </listener>2、struts2配置在web.xml文件中的過濾器: 
  17. Java代碼 
  18. <filter>  
  19. <filter-name>struts2</filter-name>  
  20. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  21. </filter> 
  22.  
  23. <filter-mapping>  
  24. <filter-name>struts2</filter-name>  
  25. <url-patter>/*</url-patter>  
  26. </filter-mapping>  
  27. <filter> 
  28. <filter-name>struts2</filter-name> 
  29. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class
  30. </filter> 
  31.  
  32. <filter-mapping> 
  33. <filter-name>struts2</filter-name> 
  34. <url-patter>/*</url-patter> 
  35. </filter-mapping> 

3、設置struts.xml文件,就可以使用spring的IOC來管理struts的Action:
Java代碼

  1. <content name=“struts.objectFactory” value=“spring” >  
  2. <content name="struts.objectFactory" value="spring" > 

4、第三步設置后,以后在struts.xml 文件中配置一個action時,它的class就不是一個類了,而是在applicationContext.xml文件中定義過的類的ID,在 struts.xml文件中就只需要引用定義好的類的id 就可以了。
然后特別要注意的一個問題:action是一個請求就是一個action對 象,而在spring中則不是的,它是自動分配類的實例的,是使用的單 態模式來生產類的實例的,不符合action,因此在applicationContext.xml文件中定義每個action時,都要在類后加上:
Java代碼
scope=“prototype” 屬性 
scope="prototype" 屬性三、 三者組合開發:
一般在組合開發時,沒有什么難的,只要把上面兩步做好就可以是三個組合開發了。 上圖則是對于進行組合開發時,一般使用的系統架構:
1、 先從***層開發,先開發POJO類,和Hibernate映射文件。它相當于系統的數據庫層。
2、 再開發DAO層,它是對于數據進行持久化的一層,專門處理各種數據增、刪、改、查的功能。并且使用DAO工廠模式,以保證和上層沒有任何的聯系,并且可以方便于類與接口的擴展。
3、 第三是開發manager層,它相當于軟件的業務邏輯層,即專門處理各種業務邏輯。實現系統的業務處理功能。并且它隔離事務,使與下層的數據持久和上層的數據操作沒有任何的聯系。
4、 Action層,也即軟件的表示層,處理action的接收與回復。各action由spring管理。
五、 組合開發中的一些問題:
1、 在組合開發中,常見的一個問題就是session的管理,當我們使用HibernateTemplate操作數據庫時,可以不對session進行顯示的操作,spring可以自動處理session的打開與關閉。
我們可以在web.xml文件中顯示的配置一個session管理的過濾器,它專門幫助我們關閉session:
Java代碼

 

  1. <filter>  
  2. <filter-name>lazyLoadingFilter</filter-name>  
  3. <filter-class>  
  4. org.springframwork.orm.hibernate3.support.OpenSessionInViewFilter  
  5. </filter-class>  
  6. </filter> 
  7.  
  8. <filter-mapping>  
  9. <filter-name>lazyLoadingFilter</filter-name>  
  10. <url-pattern>*.action</url-pattern>  
  11. </filter-mapping>  
  12. 注:它一定要在struts2的過濾器之前。因為web.xml文件的過濾器執行是有順序的。而session一定在前面進行。  
  13. <filter> 
  14.         <filter-name>lazyLoadingFilter</filter-name> 
  15. <filter-class
  16. org.springframwork.orm.hibernate3.support.OpenSessionInViewFilter 
  17. </filter-class
  18. </filter> 
  19.  
  20. <filter-mapping> 
  21.          <filter-name>lazyLoadingFilter</filter-name> 
  22.          <url-pattern>*.action</url-pattern> 
  23. </filter-mapping> 

注:它一定要在struts2的過濾器之前。因為web.xml文件的過濾器執行是有順序的。而session一定在前面進行。它會在所有的action處理完了,頁面顯示完了,就會自動關閉session。
六、 spring事務處理
1、事務的處理也交給了spring來管理,要在applicationContext.xml文件中上配置事務管理類:
Java代碼
//實施事務管理的bean

  1. <bean id=”transactionManager”  
  2. class=”org.springframwork.orm.hibernate3.HibernateTransactionManager”>  
  3. <property name=”sessionFactory”>  
  4. <ref bean=”sessionFactory” />  
  5. </property>  
  6. </bean>  
  7. //實施事務管理的bean 
  8. <bean id=”transactionManager” 
  9. class=”org.springframwork.orm.hibernate3.HibernateTransactionManager”> 
  10.        <property name=”sessionFactory”> 
  11.            <ref bean=”sessionFactory” /> 
  12. </property> 

</bean>它是通過sessionFactory來管理,因此在傳進來一個sessionFactory來接管事務處理。
2、 聲明式事務處理:
在spring中對事務進行管理時,可以顯示地進行事務處理的定義:
Java代碼

  1. <tx:advice id=”txAdvice” transaction-manager=”transactionManager”>  
  2. <tx:attributes >  

//propagation表示的是事務的傳播特性,使用required時,是當檢測到add開頭的方法時,就看此時有沒有開啟的事務,如果有則將方法放進事務中去,如果沒有,則新建一個事務。然后將方法放進去。

 

  1. <tx:method name=”add*” propagation=”REQUIRED”>  
  2. <tx:method name=”delete*” propagation=”REQUIRED”>  
  3. <tx:method name=”update*” propagation=”REQUIRED”>  
  4. //如果檢測到其它的方法,則給其只讀數據庫的屬性。即當本方法在讀時,其它的方法不能再去寫了。保證一個事務的完整性。  
  5. <tx:method name=”*” read-only=”true”>  
  6. </tx:attributes>  
  7. </tx:advice>  
  8. //給事務添加的屬性 
  9. <tx:advice id=”txAdvice” transaction-manager=”transactionManager”> 
  10.      <tx:attributes > 

//propagation表示的是事務的傳播特性,使用required時,是當檢測到add開頭的方法時,就看此時有沒有開啟的事務,如果有則將方法放進事務中去,如果沒有,則新建一個事務。然后將方法放進去。
          <tx:method name=”add*” propagation=”REQUIRED”>
          <tx:method name=”delete*” propagation=”REQUIRED”>
           <tx:method name=”update*” propagation=”REQUIRED”>
//如果檢測到其它的方法,則給其只讀數據庫的屬性。即當本方法在讀時,其它的方法不能再去寫了。保證一個事務的完整性。
           <tx:method name=”*” read-only=”true”>
</tx:attributes>
</tx:advice>對于事務的其它傳播屬性,則可以參考其它文檔進行相關的了解。
上 一個配置是針對于所有包中類的事務處理方法的設置。下面一段是<aop:config/> 的定義,它確保由 ‘txAdvice’ bean定義的事務通知在應用中合適的點被執行。首先我們定義了 一個切面,它匹配 HibernateDAO 接口定義的所有操作,我們把該切面叫做 ‘allManagerMethod’。然后我們用一個通知器(advisor)把這個切面與 ‘txAdvice’ 綁定在一起,表示當 ‘allManagerMethod’ 執行時,’txAdvice’ 定義的通知事務邏輯將被執行。這就是AOP切面工程:
Java代碼

  1. Java代碼 
  2. <aop:config>  
  3. <aop:pointcut id=”allManagerMethod”  
  4. expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/>  
  5. //調用上面配置的事務屬性,可以將它給本aop pointcut。  
  6. <aop:advisor advice-ref=”txAdvice” pointcut-ref=”allManagerMethod”/>  
  7. //如果還有其它的定義,則可以再加上pointcut、advisor來定義本切面點的事務邏輯。  
  8. </aop:config>  
  9. <aop:config> 
  10.       <aop:pointcut id=”allManagerMethod” 
  11. expression=”execution(* com.hejianjiao.hibernate.HibernateDAO.*(..))”/> 
  12. //調用上面配置的事務屬性,可以將它給本aop pointcut。 
  13.       <aop:advisor advice-ref=”txAdvice” pointcut-ref=”allManagerMethod”/> 
  14. //如果還有其它的定義,則可以再加上pointcut、advisor來定義本切面點的事務邏輯。 

</aop:config> //expression中的內容是要執行本切面的一個接口,中的所有方法:如:一個接口中定義了操作數據的方 法:com.hejianjiao.hibernate.HibernateDAO,則下面execution括號中的內容就為:* com.hejianjiao.hibernate.HibernateDAO.*(..)。而如果在com.hejianjiao.hibernate 包中還有其它的類也有操作方法,我們要一起定義的話,就可以寫為:* com.hejianjiao.*.*(..),其中(..)表示的是方法,前面的***個*是操作的接口或者類。
上面的配置將為由 ‘HibernateDAO’ 定義的bean創建一個代理對象,這個代理對象被裝配了事務通知,所以當它的相應方法被調用時,一個事務將被啟動、掛起、被標記為只讀,或者其它(根據該方法所配置的事務語義)

本文鏈接:http://my.oschina.net/heiyexue/blog/296692

責任編輯:chenqingxiang 來源: oschina
相關推薦

2009-06-02 14:09:37

myeclipse smyeclipse開發myeclipse

2009-08-14 09:40:55

MyEclipse整合

2011-03-02 10:04:40

SSHDMR

2012-05-03 10:13:56

FlexSSHJava

2017-08-24 09:19:20

分解技術揭秘

2022-11-03 15:18:20

Python組件算法

2010-09-02 14:53:19

DHCP Relay

2010-03-30 18:56:13

Nginx配置模塊

2009-03-04 10:38:36

XenDesktop 桌面虛擬化Xendesktop

2011-06-16 16:20:32

JavaScript分解任務

2013-09-17 13:10:17

TCP協議網絡協議

2021-07-07 09:00:00

分解式存儲架構云服務

2011-08-22 10:40:07

SSH命令SSH命令

2012-10-24 17:30:54

MozillaFacebook

2017-02-08 09:25:16

Spark分解推薦

2010-04-21 13:48:48

網絡負載平衡

2010-08-30 09:07:12

DHCP工作流程

2022-10-08 16:26:23

APP應用開發

2023-02-15 09:00:00

算法推薦系統矩陣分解算法

2017-06-23 21:32:16

MySQL大數據優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区高清免费 | 香蕉视频久久久 | 国产免费av在线 | 成人亚洲性情网站www在线观看 | 亚洲精品久久久久久久久久久 | 美女福利视频网站 | 成年人免费网站 | 亚洲福利av | 伊人网站在线观看 | av中文字幕在线 | 黄色精品 | 狠狠干天天干 | 欧美日韩不卡 | 国产精品免费一区二区三区 | 麻豆久久久久 | 成人h视频在线 | 一区精品国产欧美在线 | 欧美在线a | 国产成人精品免费 | 羞羞网站在线免费观看 | 中国大陆高清aⅴ毛片 | 情侣av| 视频一区二区中文字幕 | 国产乱码久久久久久 | 久久久精品一区二区三区 | 日韩欧美国产一区二区 | 中文在线观看视频 | 欧美精品二区 | 久草视频在线播放 | 色欧美日韩 | 久色激情 | 成人免费看片网 | 亚洲 欧美 另类 综合 偷拍 | 在线综合视频 | 精品国产31久久久久久 | 久国产精品 | 精品乱码一区二区三四区视频 | 免费一区 | 一区二区三区福利视频 | 久久国产成人 | 亚洲欧美一区二区三区在线 |