龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

spring + hibernate 数据话持久层(转)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
对于J2EE 应用程序而言,事务的处理一般有两种模式: 1. 依靠特定事务资源的事务处理 这是应用开发中最常见的模式,即通过特定资源提供的事务机制进行事务治理。 如通过JDBC、J

  对于J2EE 应用程序而言,事务的处理一般有两种模式:
  1. 依靠特定事务资源的事务处理
  这是应用开发中最常见的模式,即通过特定资源提供的事务机制进行事务治理。
          如通过JDBC、JTA 的rollback、commit方法;Hibernate Transaction 的rollback、commit方法等。这种方法大家已经相当熟悉。
  2. 依靠容器的参数化事务治理
  通过容器提供的集约式参数化事务机制,实现事务的外部治理,如EJB 中的事务治理模式。
          如,下面的EJB事务定义中,将SessionBean MySession的doService方
  法定义为Required。也就是说,当MySession.doServer 方法被某个线程调用时,容器将此线程纳入事务治理容器,方法调用过程中假如发生异常,当前事务将被容器自动回滚,假如方法正常结束,则容器将自动提交当前事务。
  <container-transaction >
  <method >
  <ejb-name>MySession</ejb-name>
  <method-intf>Remote</method-intf>
  <method-name>doService</method-name>
  <method-params>
  <method-param>Java.lang.String</method-param>
  </method-params>
  </method>
  <trans-attribute>Required</trans-attribute>
  </container-transaction>
  容器治理的参数化事务为程序开发提供了相当的灵活性,同时因为将事务委托给容器进行治理,应用逻辑中无需再编写事务代码,大大节省了代码量(非凡是针对需要同时操作多个事务资源的应用),从而提高了生产率。然而,使用EJB 事务治理的代价相当高昂,撇开EJB 容器不菲的价格,EJB的学习成本,部署、迁移、维护难度,以及容器本身带来的性能开销(这往往意味着需要更高的硬件配置)都给我们带来了相当的困惑。此时事务治理所带来的优势往往还不能抵消上面这些负面影响。
  
  Spring事务治理能给我们带来什么?
  
  下面这段XML配置片断展示了Spring中的事务设定方式:
  <beans>
  <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName">
  <value>org.gjt.mm.mysql.Driver</value>
  </property>
  <property name="url">
  <value>jdbc:mysql://localhost/sample</value>
  </property>
  <property name="username">
  <value>user</value>
  </property>
  <property name="passWord">
  <value>mypass</value>
  </property>
  </bean>
  <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTr
  ansactionManager">
  <property name="dataSource">
  <ref local="dataSource" />
  </property>
  </bean>
  <bean id="userDAO" class="net.xiaxin.dao.UserDAO">
  <property name="dataSource">
  <ref local="dataSource" />
  </property>
  </bean>
  SpringFrameWork Developer’s Guide Version 0.6
  October 8, 2004 So many open source projects. Why not Open your Documents?
  <bean id="userDAOProxy"
  class="org.springframework.transaction.interceptor.Tran
  sactionProxyFactoryBean">
  <property name="transactionManager">
  <ref bean="transactionManager" />
  </property>
  
  

精彩图集

赞助商链接