天天看點

[Java web]-- spring3(5)

1.spring事務管理:

<!-- 事務管理器 -->

<bean id="txM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

<!-- 事務管理器的進一步包裝:指定事務屬性

 ACID:原子性  一緻性   隔離性  持久性 

 隔離性:1.讀未送出        并發性最好, 導緻髒讀

      2.讀送出           并發性較好   可防止髒讀,但不能防止不可重複讀

      3.可重複讀       并發性不好   可防止髒讀和不可重複讀,不可防治幻影讀

      4.序列化讀       并發性極差    可防止髒讀和不可重複讀和幻影讀

 傳播性:REQUIRED==必須要有事務環境,如果已經處于事務環境,則融入目前事務,如果沒有事務環境,則開始事務

      SUPPORTS==不強制要求有事務環境,有則融入,沒有則在非事務環境下運作

 隻讀屬性:

 復原規則:

 -->

<tx:advice id="txManager" transaction-manager="txM">

<tx:attributes>

<!-- 以業務方法為機關,設定事務屬性 -->

<tx:method name="insertUser" isolation="READ_COMMITTED" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>

<tx:method name="deleteUser" isolation="READ_COMMITTED" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>

<tx:method name="updateUser" isolation="READ_COMMITTED" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>

<tx:method name="query*" isolation="READ_COMMITTED" propagation="REQUIRED" read-only="true" rollback-for="java.lang.Exception"/>

</tx:attributes>

</tx:advice>

===============================================================================================

2.ssh整合

  1.spring+hibernate

    *DataSource

*LocalSessionFactoryBean

*HibernateTemplate

*HibernateTransactionManager

  2.spring+struts

    *導入 spring-struts-plugin.jar

*添加ContextLoaderListener 負責建立工廠

  <!-- 負責建立spring工廠 -->

  <listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

*添加配置檔案位置的context-param

  <!-- spring配置檔案位置 -->

  <context-param>

<param-name>contextConfigLocation</param-name>

<!-- <param-value>classpath:com/c35/config/applicationContext,classpath:xx/xx/xx/xx,</param-value> -->

<param-value>classpath:com/c35/config/applicationContext.xml</param-value>

  </context-param>

*在struts.xml中配置Action時

  <!-- 

class="action 在spring工廠中對應bean的ID"

  -->

  <action name="ssh_*" method="{1}" class="userAction">

<result name="queryok">/users.jsp</result>

<result name="insertok">/index.jsp</result>

<result name="deleteok">/index.jsp</result>

<result name="error">/error.jsp</result>

<result name="querypageok">/users_page.jsp</result>

  </action>

=============================================================================================

3.小配置資訊的分離:

*定義 小配置檔案:

c35.url=jdbc:oracle:thin:@localhost:1521:xe

c35.driverclass=oracle.jdbc.OracleDriver

c35.username=hr

c35.password=hr

c35.max=2

c35.min=1

c35.wait=2000

*在spring的配置檔案中引入小配置檔案:(context命名空間)

<context:property-placeholder location="classpath:com/c35/config/db.properties"/>

    *使用:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

<property name="url" value="${c35.url}"></property>

<property name="driverClassName" value="${c35.driverclass}"></property>

<property name="username" value="${c35.username}"></property>

<property name="password" value="${c35.password}"></property>

<property name="maxActive" value="${c35.max}"></property>

<property name="initialSize" value="${c35.min}"></property>

<property name="maxWait" value="${c35.wait}"></property>

</bean>

=============================================================================================

繼續閱讀