<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    spring 與 hibernate 整合(事務)

    Posted on 2008-05-09 13:47 G_G 閱讀(3166) 評論(0)  編輯  收藏 所屬分類: hibernateSpring 、AOP
    參考:第?9?章?事務管理 - Spring Framework reference 2.0.5 參考手冊中文版
    http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch09.html

    先從配置文件開始:
    源碼:springAop.rar

    需要jar
    <?xml?version="1.0"?encoding="UTF-8"?>
    <classpath>
    ????
    <classpathentry?kind="src"?path="java"/>
    ????
    <classpathentry?kind="con"?path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    ????
    <classpathentry?kind="lib"?path="lib/aspectjrt.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/aspectjweaver.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/spring.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/spring-sources.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/commons-logging-1.0.4.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/cglib-nodep-2.1_3.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/hibernate3.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/log4j-1.2.11.jar"/>
    ????
    <classpathentry?kind="con"?path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    ????
    <classpathentry?kind="lib"?path="lib/dom4j-1.6.1.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/commons-collections-2.1.1.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/mysql.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/jta.jar"/>
    ????
    <classpathentry?kind="lib"?path="lib/antlr-2.7.6.jar"/>
    ????
    <classpathentry?kind="output"?path="bin"/>
    </classpath>


    spring 配置
    <?xml?version="1.0"?encoding="UTF-8"?>
    <beans?xmlns="http://www.springframework.org/schema/beans"
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????xmlns:aop
    ="http://www.springframework.org/schema/aop"
    ????xmlns:tx
    ="http://www.springframework.org/schema/tx"
    ????xsi:schemaLocation
    ="http://www.springframework.org/schema/beans?
    ??http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    ??http://www.springframework.org/schema/aop?
    ??http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    ??http://www.springframework.org/schema/tx?
    ??http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
    >

    ????
    <!--?demo?start?-->
    ????
    <import?resource="demo_spring.xml"?/>
    ????
    <!--?demo?end?-->

    ????
    <bean?id="dataSource"
    ????????class
    ="org.springframework.jdbc.datasource.DriverManagerDataSource">
    ????????
    <property?name="driverClassName"
    ????????????value
    ="com.mysql.jdbc.Driver">
    ????????
    </property>
    ????????
    <property?name="url"
    ????????????value
    ="jdbc:mysql://localhost:3306/aop?characterEncoding=utf8">
    ????????
    </property>
    ????????
    <property?name="username"?value="root"></property>
    ????????
    <property?name="password"?value=""></property>
    ????
    </bean>

    ????
    <!--?hibernate3?sessionFactory??-->
    ????
    <bean?id="sessionFactory"
    ????????class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    ????????
    <!--?此次??為?spring?事務需要使用?dataSource?;為空事務由Hibernian自己維護?-->
    ????????
    <property?name="dataSource"?ref="dataSource"?/>
    ????????
    <property?name="configLocation"
    ????????????value
    ="classpath:hibernate.cfg.xml"?/>
    ????
    </bean>



    ????
    <!--?事務適配器?-->
    ????
    <bean?id="txManager"
    ????????class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
    ????????
    <property?name="sessionFactory"?ref="sessionFactory"?/>
    ????
    </bean>






    ????
    <!--?aop?與事務聯系?aopBean<->txAdvice??-->
    ????
    <aop:config>
    ????????
    <!--?邏輯攔截?-->
    ????????
    <aop:pointcut?id="demoAopBean"
    ????????????expression
    ="execution(*?demo*.*.*(..))"?/>
    ????????
    <aop:advisor?advice-ref="demoTxAdvice"
    ????????????pointcut-ref
    ="demoAopBean"?/>
    ????
    </aop:config>

    ????
    <!--?事務原子?具體方法進行什么事務?-->
    ????
    <tx:advice?id="demoTxAdvice"?transaction-manager="txManager">
    ????????
    <tx:attributes>
    ????????????
    <tx:method?name="get*"?propagation="SUPPORTS"
    ????????????????read-only
    ="true"?rollback-for="NoProductInStockException"?/>
    ????????????
    <tx:method?name="save*"?propagation="REQUIRED"
    ????????????????rollback-for
    ="NoProductInStockException"?/>
    ????????????
    <tx:method?name="update*"?propagation="REQUIRED"
    ????????????????rollback-for
    ="NoProductInStockException"?/>
    ????????????
    <tx:method?name="remove*"?propagation="REQUIRED"
    ????????????????rollback-for
    ="NoProductInStockException"?/>
    ????????????
    <tx:method?name="*"?propagation="SUPPORTS"
    ????????????????rollback-for
    ="NoProductInStockException"?/>
    ????????
    </tx:attributes>
    ????
    </tx:advice>



    ????
    <!--?daoCalss?:?extends?HibernateDaoSupport?implements?BeanDao?-->
    ????
    <bean?id="beanDao"
    ????????class
    ="demo.springHibernate.dao.imp.BeanDaoImp">
    ????????
    <property?name="sessionFactory">
    ????????????
    <ref?bean="sessionFactory"></ref>
    ????????
    </property>
    ????
    </bean>


    ????
    <bean?id="helloAction"?class="demo.struts2Spring.HelloWorld"
    ????????scope
    ="prototype">
    ????????
    <property?name="bds"?ref="beanDao"></property>
    ????
    </bean>
    ????
    </beans>


    hibernate 配置
    <?xml?version="1.0"?encoding="UTF-8"?>
    <!DOCTYPE?hibernate-configuration?PUBLIC
    ????????"-//Hibernate/Hibernate?Configuration?DTD?3.0//EN"
    ????????"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
    >
    <hibernate-configuration>
    <session-factory?name="asdf">
    ????
    <property?name="hibernate.dialect">mysql</property>
    ????
    <property?name="myeclipse.connection.profile">
    ????????com.mysql.jdbc.Driver
    ????
    </property>
    ????
    <property?name="connection.url">
    ????????jdbc:mysql://localhost/aop
    ????
    </property>
    ????
    <property?name="show_sql">true</property>
    ????
    ????
    <property?name="connection.username">root</property>
    ????
    <property?name="connection.password"></property>
    ????
    <property?name="connection.driver_class">
    ????????com.mysql.jdbc.Driver
    ????
    </property>
    ????
    <property?name="dialect">
    ????????org.hibernate.dialect.MySQLDialect
    ????
    </property>
    ????
    ????
    <mapping?resource="bean/UnitBean.hbm.xml"?/>
    ????
    </session-factory>
    </hibernate-configuration>


    dao 類(接口)
    package?dao.imp;

    import?java.util.List;

    import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    import?bean.UnitBean;

    import?dao.BeanDao;

    public?class?BeanDaoImp?extends?HibernateDaoSupport?implements?BeanDao{
    ????
    public?void?addBean(UnitBean?unitBean)?{
    ????????
    this.getHibernateTemplate().save(unitBean);
    ????}

    ????
    public?List<UnitBean>?getBeanByAll()?{
    ????????
    return?this.getHibernateTemplate().find("?from?"+UnitBean.class.getName());
    ????}

    ????
    public?void?removeBean(long?beanId)?{
    ????????
    this.getHibernateTemplate().delete(
    ????????????????getHibernateTemplate().get(UnitBean.
    class,?beanId)
    ????????????);
    ????}
    ????
    }

    Main 類
    package?unit;

    import?org.springframework.context.ApplicationContext;
    import?org.springframework.context.support.ClassPathXmlApplicationContext;

    import?dao.BeanDao;
    import?bean.UnitBean;

    public?class?Main?{
    ????
    public?static?void?main(String[]?args)?{
    ???????????ApplicationContext?ctx?
    =?new?ClassPathXmlApplicationContext("beans.xml");
    ???????????BeanDao?dao?
    =?(BeanDao)?ctx.getBean("beanDao");
    ???????????UnitBean?bean?
    =?new?UnitBean();
    ???????????bean.setName(
    "xx");
    ???????????bean.setPass(
    "11");
    ???????????dao.addBean(bean);
    ???????????
    ???????????
    for(UnitBean?unitBean?:?dao.getBeanByAll()?){
    ???????????????System.out.println(?unitBean.getId()?);
    ???????????}
    ???????????
    ???????????dao.removeBean(bean.getId());
    ???????????
    ????}
    }
    結果:
    Hibernate: insert into bean (name, pass) values (?, ?)
    Hibernate: select unitbean0_.id as id0_, unitbean0_.name as name0_, unitbean0_.pass as pass0_ from bean unitbean0_
    1
    Hibernate: select unitbean0_.id as id0_0_, unitbean0_.name as name0_0_, unitbean0_.pass as pass0_0_ from bean unitbean0_ where unitbean0_.id=?
    Hibernate: delete from bean where id=?






    主站蜘蛛池模板: 国产V亚洲V天堂无码久久久| 亚洲第一视频在线观看免费| 亚洲国产精品久久久久婷婷软件| 亚洲第一视频在线观看免费| 亚洲AV伊人久久青青草原| 阿v视频免费在线观看| 亚洲VA综合VA国产产VA中| 一级成人a做片免费| 亚洲精品色午夜无码专区日韩| 中文字幕免费在线视频| 人人狠狠综合久久亚洲88| 日本不卡免费新一区二区三区| 亚洲午夜视频在线观看| 91大神免费观看| 亚洲人成7777影视在线观看| 成年女人毛片免费观看97| 亚洲AV无码一区二区三区网址| 免费一级毛片不卡不收费| sss日本免费完整版在线观看| 国产亚洲精品国产| 久久精品毛片免费观看| 国产精品亚洲综合久久 | 免费看黄网站在线看 | 1000部夫妻午夜免费| 亚洲综合色7777情网站777| 日韩免费视频播放| 中文字幕在线免费看| 亚洲妇女水蜜桃av网网站| 永久久久免费浮力影院| 国产裸体美女永久免费无遮挡| 久久精品国产亚洲av高清漫画| 免费高清资源黄网站在线观看| 伊人久久国产免费观看视频| 亚洲精品成人av在线| 日韩免费高清视频网站| 国产无遮挡裸体免费视频在线观看 | 最近中文字幕高清免费中文字幕mv | 亚洲精品无码国产片| JLZZJLZZ亚洲乱熟无码| 蜜桃AV无码免费看永久| 免费在线观看一区|