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

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

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

    J2EE之巔

     

    Spring2.0與Hibernate3整合

    ????????????????????????????????????????????????????? 蔡超

    北京天融信,軟件架構師

    SUN certified Enterprise Architect

    Microsoft certified Solution Developer

    IBM certified RUP Specialist

    聯系方式 :cai_chao@topsec.com.cn,chaocai2001@yahoo.com.cn

    010-82776427

    ?

    Sping2 Hibernate3 都是如今流行的請量級框架,如何將兩者進行整合呢,目前很多資料討論的都是老版本的整合方式,下面給出這兩種框架的新版整合方式。

    1 配置數據源

    ??? <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

    ??? <property name="driverClassName">

    ??????? <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

    ??? </property>

    ??? <property name="url">

    ??????? <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webguide</value>

    ??? </property>

    ??? <property name="username">

    ??????? <value>sa</value>

    ??? </property>

    ??? <property name="password">

    ??????? <value>talent</value>

    ??? </property>

    ?? </bean>

    2 配置 Hibernate SessionFactory

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    ?????? <property name="mappingResources">

    ?????? <!—Hibernate 映射文件列表 -->

    ?????????? <list>

    ?????????????? <value>Greeting.hbm.xml</value>

    ? ?????????</list>

    ?????? </property>

    ?????? <property name="hibernateProperties">

    ?????????? <props>

    ?????????????? <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>

    ??????????????? <prop key="hibernate.show_sql">true</prop>

    ??? ???? ???????<prop key="hbm2ddl.auto">update</prop>

    ?????????? </props>

    ?????? </property>

    ?????? <property name="dataSource">

    ?????????? <ref bean="myDataSource"/>

    ?????? </property>

    ??????

    ?? </bean>

    3 配置事務

    ? <bean id="myTranAttri" class="org.springframework.transaction.interceptor.DefaultTransactionAttribute">

    ??? <property name="propagationBehaviorName">

    ??? ??? <value>PROPAGATION_REQUIRED</value>

    ??? </property>

    ??? </bean>

    ??? <bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">

    ??? <property name="transactionAttribute">

    ??? ??? <ref bean="myTranAttri"/>

    ??? </property>

    ??? </bean>

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

    ?????? ? <property name="sessionFactory">

    ??????????? <ref bean="mySessionFactory"/>

    ??????? </property>

    ??? </bean>

    ??????????

    ??? <bean id="txInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor" lazy-init="true">

    ?????? <property name="transactionManager">

    ?????????? <ref bean="transactionManager"/>

    ?????? </property>

    ?????? <property name="transactionAttributeSource">

    ?????????? <ref bean="transactionAttributeSource"/>

    ?????? </property>

    ??? </bean>

    ?

    4 使用 Hibernate 實體

    方法一:采用 AOP 的方式 package hibernate.integration.entity;

    ?

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

    import org.springframework.orm.hibernate3.SessionFactoryUtils;

    ?

    /**

    ?* @author chao cai

    ?*

    ?* TODO To change the template for this generated type comment go to

    ?* Window - Preferences - Java - Code Style - Code Templates

    ?*/

    public class GreetingLogic3 implements IGreetingLogic{

    ??? private SessionFactory sessionFactory;

    ??? /* (non-Javadoc)

    ??? ?* @see hibernate.integration.entity.IGreetingLogic#loadGreeting(java.lang.Integer)

    ??? ?*/

    ??? public Greeting loadGreeting(Integer id) {

    ?????? Session session = sessionFactory.getCurrentSession();

    ?????? Greeting greeting=(Greeting) session.get(Greeting.class,id);

    ?????? return greeting;

    ???

    ??? }

    ?

    ?

    ??? /**

    ??? ?* @return Returns the sessionFactory.

    ??? ?*/

    ??? public SessionFactory getSessionFactory() {

    ?????? return sessionFactory;

    ??? }

    ??? /**

    ??? ?* @param sessionFactory The sessionFactory to set.

    ??? ?*/

    ??? public void setSessionFactory(SessionFactory sessionFactory) {

    ?????? this.sessionFactory = sessionFactory;

    ??? }

    }

    代碼樣例:

    package hibernate.integration.entity;

    ?

    /**

    ?* @author chao cai

    ?*

    ?* TODO To change the template for this generated type comment go to

    ?* Window - Preferences - Java - Code Style - Code Templates

    ?*/

    public interface IGreetingLogic {

    ??? public Greeting loadGreeting(Integer id);

    }

    ?

    配置

    ??? <bean id="myGreetingLogic" class="org.springframework.aop.framework.ProxyFactoryBean">

    ??????? <property name="proxyInterfaces">

    ??????????? <value>hibernate.integration.entity.IGreetingLogic</value>

    ??????? </property>

    ??????? <property name="interceptorNames">

    ??????????? <list>

    ??????????????? <value>txInterceptor</value>

    ??????????????? <value>myHibernateInterceptor</value>

    ?????????????

    ??????????? </list>

    ??????? </property>

    ??????? <property name="target">

    ???? ??? <ref bean="greetingLogic3"/>

    ??????? </property>

    </bean>

    客戶端代碼:

    AbstractApplicationContext context=new FileSystemXmlApplicationContext("spring-hibernate.xml");

    IGreetingLogic gl=(IGreetingLogic) context.getBean("myProductDao");

    ?????? greeting=gl.loadGreeting(new Integer(1));

    ?????? System.out.println(greeting.getGreeting());

    ?

    方法二:采用 HibernateDaoSupport

    代碼:

    package hibernate.integration.entity;

    ?

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

    import org.springframework.orm.hibernate3.SessionFactoryUtils;

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

    ?

    /**

    ?* @author Chao Cai

    ?*

    ?* TODO To change the template for this generated type comment go to

    ?* Window - Preferences - Java - Code Style - Code Templates

    ?*/

    public class GreetingLogic extends HibernateDaoSupport implements IGreetingLogic{

    ???

    ??? public Greeting loadGreeting(Integer id){

    ?????? Session session = SessionFactoryUtils.getSession(getSessionFactory(), false);

    ?????? Greeting greeting=(Greeting) session.get(Greeting.class,id);

    ?????? return greeting;

    ??????

    ??? }

    }

    ??? <bean id="greetingLogic" class="hibernate.integration.entity.GreetingLogic">

    ????????? <property name="sessionFactory">

    ??????????? <ref bean="mySessionFactory"/>

    ??????? </property>

    ??? </bean>

    posted on 2007-02-05 17:15 超越巔峰 閱讀(6499) 評論(5)  編輯  收藏 所屬分類: Java EE

    評論

    # re: Spring2.0與Hibernate3整合 2007-02-05 20:19 anikin

    為何不用<aop:config>和<tx:advice>來配置事務呢?難道這是你說的老版本?  回復  更多評論   

    # re: Spring2.0與Hibernate3整合 2007-02-05 21:53 Anubis

    先保存,有空再學習  回復  更多評論   

    # re: Spring2.0與Hibernate3整合[未登錄] 2007-02-05 22:45 role0523

    Spring 2.0增加了很多Schema的標記,用起來比以前順手多了。
    事務聲明中使用<aop:config>和<tx:advice>可以節省很多筆墨。  回復  更多評論   

    # re: Spring2.0與Hibernate3整合 2007-02-06 09:13 learner

    既然都是spring 2.0了 沒有體現aop的強大 感覺題目有些過了  回復  更多評論   

    # re: Spring2.0與Hibernate3整合 2007-02-06 09:22 看客

    暈了`~就這  回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(12)

    隨筆分類(54)

    隨筆檔案(59)

    文章分類(2)

    文章檔案(1)

    相冊

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本免费在线中文字幕| 永久黄网站色视频免费| 亚洲一区动漫卡通在线播放| 毛片免费视频在线观看| 一级女人18片毛片免费视频 | 亚洲成AV人片在| 久久久久久AV无码免费网站| 中文字幕亚洲码在线| 在线亚洲午夜理论AV大片| 99热在线精品免费播放6| 亚洲熟妇自偷自拍另欧美| 国产亚洲精品看片在线观看| 99久久国产热无码精品免费| 一级片在线免费看| 亚洲一区中文字幕在线电影网 | 国产免费无码AV片在线观看不卡| 亚洲毛片免费观看| 国产亚洲精品不卡在线| 成人免费大片免费观看网站| 九九九国产精品成人免费视频| 久久亚洲精品无码VA大香大香| 亚洲一级特黄无码片| 国产a视频精品免费观看| 一区二区三区免费视频播放器| 亚洲乱码中文论理电影| 日韩亚洲欧洲在线com91tv| 免费观看的av毛片的网站| 最近免费mv在线电影| 在线观看片免费人成视频播放| 亚洲色大成网站WWW国产| 亚洲精品一区二区三区四区乱码 | 亚洲乱码中文字幕小综合| 亚洲精品自在在线观看| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲精品偷拍视频免费观看| 亚洲免费综合色在线视频| APP在线免费观看视频| 特级毛片aaaa免费观看| 色偷偷噜噜噜亚洲男人| 亚洲人精品亚洲人成在线| 亚洲高清不卡视频|