spring--整合hiberante struts2
整合hibernate:
集成hibernate3 和4有一定的區別
目前基本使用三 所以該部分類容以3位基礎
1導包
1.1 導入hibernate3.導入 (hibernate3.jar required文件的所有 slf4j-api.jar jpa文件夾中的包(用於註解))
1.2 log4j包 log4j的配置文件
1.3 還有spring的依賴包
1.4 導入dpcp的依賴包
2 創建beans.xml
2.1創建datasource 使用dbcp(和集成jdbc一樣)
2.2 在beans裏面 也就是不要hibernate的配置文件了 創建hibernateSessionFactory(用springframe裏面的hibernateFacotory)
jdbc裏面的數據源是直接注入到jdbcTemplate裏面的 沒有sessionFactory
<!-- 如果使用annotation的方式 不能使用LocalSessionFactoryBean 而應該使用 annotation.AnnotationSessinFactoryBean
因爲一個是掃描hibernate註解packagesToScan掃描entity 一個是掃描普通xml的hbm文件
-->
<!-- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- 注入數據源 -->
<property name="dataSource" ref="dataSource" />
<!-- 設置spring去哪個包中查找相應的實體類 -->
<property name="packagesToScan">
<value>com.itany.model</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hinernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hinernate.show_sql">true</prop>
<prop key="hinernate.hbm2ddl.auto">update</prop>
<prop key="hinernate.format_sql">false</prop>
</props>
</property>
</bean>
3 爲實體類添加hibernate的annotataion 或者hbm.xml
4 創建基於hibernate的DAO
4.1在相應的dao中注入相應的sessionFactory
4.2 如果通過spring來管理相應的sessionFactory 不再使用factory.openSession
而是應該使用facorty.getCurrentSession來打開一個session
這個session就會被spring所管理 此時開發人員就不用進行事物控制 也不要關閉Session 都由spring所完成
因爲這個sessionFactory對象是由springframework.hibernate類進行生成的
getCurrentSession才能被spring所管理
5配置spring的事物處理 只有配置了事物處理之後,spring纔能有效的進行事物管理
<!-- 配置 spring和Hiberanet集成的切面處理
如果不想用HIbernate就進行事物處理 spring直接配置也是可以的 在spring_aop_xml中就可以 不用Hibernate 直接配置
切面 和 前後方法
<aop:config>
注意肯定在前面裏面寫切點 在哪些位置加入相應aspect
<aop:aspect id="myLogAspect" ref="aspectLog">
<aop:pointcut expression="execution(* com.itany.dao.*.add*(..))||
execution(* com.itany.dao.*.delete*(..))" id="logPoint"/>
因爲一個切面裏面比如日誌 可能需要加入日誌的有好幾個切點需要 所以要輸入在哪個切點加
<aop:before method="logStart" pointcut-ref="logPoint"/>
<aop:around method="logAround" pointcut-ref="logPoint"/>
<aop:after method="logEnd" pointcut-ref="logPoint"/>
</aop:aspect>
</aop:config>
-->
<!-- 配置spring和hibernate集成進行事物的處理 -->
<!-- 聲明事務 -->
<!-- 第一步,聲明事務管理器 -->
<bean id="txmanager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 第二步,創建事務通知 在哪些方法上加上事物-->
<tx:advice id="txadvice" transaction-manager="txmanager">
<tx:attributes>
<!-- get,find用只讀事務 -->
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<!-- 其餘的方法用事務處理 -->
<!-- <tx:method name="*" propagation="NOT_SUPPORTED"/> -->
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 第三步,配置aop事務 表明哪些方法加入事物處理-->
<aop:config proxy-target-class="true">
<aop:pointcut id="pointcut" expression="execution(* com.itany.dao.*.*(..))"/>
<aop:advisor pointcut-ref="pointcut" advice-ref="txadvice" />
</aop:config>
6 spring整合hibernate 操作數據庫時候 提供了三種方式 當然spring也可以直接使用jdbc操作數據庫 也整合了:
1 一種是直接使用getCurrentSession 進行session.upadte load delete等等操作
2 一種是使用了HibernateTemplate
3 一種是使用了HibernateDaoSupport
整合struts2
1 導入structs2包 檢查是否有衝突
2 導入struts2-spring-plugin的整合包
3 配置struts2的struts.xml文件
<!--表示action由spring來創建 可以使用spring的依賴注入 -->
<constant name="struts.objectFactory"
value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
4創建action 配置基於通配符的訪問方式
5因爲總要獲取spring的bean 因此在web.xml中配置獲取BeanFactor的操作
5.1
<!-- 創建spring的監聽器 獲取spring的工廠-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 上下文參數
監聽器監聽哪些東西 初始化參數 因此要配置spring哪些文件被監聽(spring的BEAN文件) 啓動
classpath* 是classpath開頭 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 指定了兩個路徑去搜索配置項 -->
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:beans.xml</param-value>
</context-param>
5.2創建struts2的過濾器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
集成hibernate3 和4有一定的區別
目前基本使用三 所以該部分類容以3位基礎
1導包
1.1 導入hibernate3.導入 (hibernate3.jar required文件的所有 slf4j-api.jar jpa文件夾中的包(用於註解))
1.2 log4j包 log4j的配置文件
1.3 還有spring的依賴包
1.4 導入dpcp的依賴包
2 創建beans.xml
2.1創建datasource 使用dbcp(和集成jdbc一樣)
2.2 在beans裏面 也就是不要hibernate的配置文件了 創建hibernateSessionFactory(用springframe裏面的hibernateFacotory)
jdbc裏面的數據源是直接注入到jdbcTemplate裏面的 沒有sessionFactory
<!-- 如果使用annotation的方式 不能使用LocalSessionFactoryBean 而應該使用 annotation.AnnotationSessinFactoryBean
因爲一個是掃描hibernate註解packagesToScan掃描entity 一個是掃描普通xml的hbm文件
-->
<!-- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- 注入數據源 -->
<property name="dataSource" ref="dataSource" />
<!-- 設置spring去哪個包中查找相應的實體類 -->
<property name="packagesToScan">
<value>com.itany.model</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hinernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hinernate.show_sql">true</prop>
<prop key="hinernate.hbm2ddl.auto">update</prop>
<prop key="hinernate.format_sql">false</prop>
</props>
</property>
</bean>
3 爲實體類添加hibernate的annotataion 或者hbm.xml
4 創建基於hibernate的DAO
4.1在相應的dao中注入相應的sessionFactory
4.2 如果通過spring來管理相應的sessionFactory 不再使用factory.openSession
而是應該使用facorty.getCurrentSession來打開一個session
這個session就會被spring所管理 此時開發人員就不用進行事物控制 也不要關閉Session 都由spring所完成
因爲這個sessionFactory對象是由springframework.hibernate類進行生成的
getCurrentSession才能被spring所管理
5配置spring的事物處理 只有配置了事物處理之後,spring纔能有效的進行事物管理
<!-- 配置 spring和Hiberanet集成的切面處理
如果不想用HIbernate就進行事物處理 spring直接配置也是可以的 在spring_aop_xml中就可以 不用Hibernate 直接配置
切面 和 前後方法
<aop:config>
注意肯定在前面裏面寫切點 在哪些位置加入相應aspect
<aop:aspect id="myLogAspect" ref="aspectLog">
<aop:pointcut expression="execution(* com.itany.dao.*.add*(..))||
execution(* com.itany.dao.*.delete*(..))" id="logPoint"/>
因爲一個切面裏面比如日誌 可能需要加入日誌的有好幾個切點需要 所以要輸入在哪個切點加
<aop:before method="logStart" pointcut-ref="logPoint"/>
<aop:around method="logAround" pointcut-ref="logPoint"/>
<aop:after method="logEnd" pointcut-ref="logPoint"/>
</aop:aspect>
</aop:config>
-->
<!-- 配置spring和hibernate集成進行事物的處理 -->
<!-- 聲明事務 -->
<!-- 第一步,聲明事務管理器 -->
<bean id="txmanager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 第二步,創建事務通知 在哪些方法上加上事物-->
<tx:advice id="txadvice" transaction-manager="txmanager">
<tx:attributes>
<!-- get,find用只讀事務 -->
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<!-- 其餘的方法用事務處理 -->
<!-- <tx:method name="*" propagation="NOT_SUPPORTED"/> -->
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 第三步,配置aop事務 表明哪些方法加入事物處理-->
<aop:config proxy-target-class="true">
<aop:pointcut id="pointcut" expression="execution(* com.itany.dao.*.*(..))"/>
<aop:advisor pointcut-ref="pointcut" advice-ref="txadvice" />
</aop:config>
6 spring整合hibernate 操作數據庫時候 提供了三種方式 當然spring也可以直接使用jdbc操作數據庫 也整合了:
1 一種是直接使用getCurrentSession 進行session.upadte load delete等等操作
2 一種是使用了HibernateTemplate
3 一種是使用了HibernateDaoSupport
整合struts2
1 導入structs2包 檢查是否有衝突
2 導入struts2-spring-plugin的整合包
3 配置struts2的struts.xml文件
<!--表示action由spring來創建 可以使用spring的依賴注入 -->
<constant name="struts.objectFactory"
value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
4創建action 配置基於通配符的訪問方式
5因爲總要獲取spring的bean 因此在web.xml中配置獲取BeanFactor的操作
5.1
<!-- 創建spring的監聽器 獲取spring的工廠-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 上下文參數
監聽器監聽哪些東西 初始化參數 因此要配置spring哪些文件被監聽(spring的BEAN文件) 啓動
classpath* 是classpath開頭 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 指定了兩個路徑去搜索配置項 -->
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:beans.xml</param-value>
</context-param>
5.2創建struts2的過濾器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.