锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲欧美在线观看,亚洲国产AV一区二区三区四区,亚洲人成色77777http://www.tkk7.com/pirate/category/2378.htmlzh-cnThu, 01 Mar 2007 14:03:49 GMTThu, 01 Mar 2007 14:03:49 GMT60Hibernate鍏ラ棬 - Transactionhttp://www.tkk7.com/pirate/archive/2005/07/29/8720.html嫻瘋醇嫻瘋醇Fri, 29 Jul 2005 02:46:00 GMThttp://www.tkk7.com/pirate/archive/2005/07/29/8720.htmlhttp://www.tkk7.com/pirate/comments/8720.htmlhttp://www.tkk7.com/pirate/archive/2005/07/29/8720.html#Feedback0http://www.tkk7.com/pirate/comments/commentRss/8720.htmlhttp://www.tkk7.com/pirate/services/trackbacks/8720.htmlHibernate鏄JDBC鐨勮交閲忕駭瀵硅薄灝佽錛?/SPAN>Hibernate鏈韓鏄笉鍏峰Transaction澶勭悊鍔熻兘鐨勶紝Hibernate鐨?/SPAN>Transaction瀹為檯涓婃槸搴曞眰鐨?/SPAN>JDBC Transaction鐨勫皝瑁咃紝鎴栬呮槸JTA Transaction鐨勫皝瑁咃紝涓嬮潰鎴戜滑璇︾粏鐨勫垎鏋愶細

Hibernate鍙互閰嶇疆涓?/SPAN>JDBCTransaction鎴栬呮槸JTATransaction錛岃繖鍙栧喅浜庝綘鍦?/SPAN>hibernate.properties涓殑閰嶇疆:

 

#hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory

#hibernate.transaction.factory_class net.sf.hibernate.transaction.JDBCTransactionFactory

 

濡傛灉浣犱粈涔堥兘涓嶉厤緗紝榛樿鎯呭喌涓嬩嬌鐢?/SPAN>JDBCTransaction錛屽鏋滀綘閰嶇疆涓猴細

 

hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory

 

灝嗕嬌鐢?/SPAN>JTATransaction涓嶇浣犲噯澶囪Hibernate浣跨敤JDBCTransaction錛岃繕鏄?/SPAN>JTATransaction錛屾垜鐨勫繝鍛婂氨鏄粈涔堥兘涓嶉厤錛屽皢璁╁畠淇濇寔榛樿鐘舵侊紝濡備笅錛?/SPAN>

 

#hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory

#hibernate.transaction.factory_class net.sf.hibernate.transaction.JDBCTransactionFactory

 

鍦ㄤ笅闈㈢殑鍒嗘瀽涓垜浼氱粰鍑哄師鍥犮?/SPAN>

涓銆?/SPAN>JDBC Transaction

鐪嬬湅浣跨敤JDBC Transaction鐨勬椂鍊欐垜浠殑浠g爜渚嬪瓙錛?/SPAN>

Session session = sf.openSession();

Transaction tx = session.beginTransactioin();

...

session.flush();

tx.commit();

session.close();

榪欐槸榛樿鐨勬儏鍐碉紝褰撲綘鍦ㄤ唬鐮佷腑浣跨敤Hibernate鐨?/SPAN>Transaction鐨勬椂鍊欏疄闄呬笂灝辨槸JDBCTransaction銆傞偅涔?/SPAN>JDBCTransaction絀剁珶鏄粈涔堜笢瑗垮憿錛熸潵鐪嬬湅婧愪唬鐮佸氨娓呮浜嗭細

                  Hibernate2.0.3婧愪唬鐮佷腑鐨勭被

 

net.sf.hibernate.transaction.JDBCTransaction:

public void begin() throws HibernateException {   

...

        if (toggleAutoCommit) session.connection().setAutoCommit(false);

...

}

榪欐槸鍚姩Transaction鐨勬柟娉曪紝鐪嬪埌connection().setAutoCommit(false) 浜嗗悧錛熸槸涓嶆槸寰堢啛鎮夛紵               鍐嶆潵鐪?/SPAN>

public void commit() throws HibernateException {   

...

    try {

        if ( session.getFlushMode()!=FlushMode.NEVER ) session.flush();

        try {

            session.connection().commit();

            committed = true;

        }

...

    toggleAutoCommit();

}

榪欐槸鎻愪氦鏂規硶錛岀湅鍒?/SPAN>connection().commit() 浜嗗悧錛熶笅闈㈠氨涓嶇敤鎴戝璇翠簡錛岃繖涓被浠g爜闈炲父綆鍗曟槗鎳傦紝閫氳繃闃呰浣挎垜浠槑鐧?/SPAN>Hibernate鐨?/SPAN>Transaction閮藉湪騫蹭簡浜涗粈涔堬紵鎴戠幇鍦ㄦ妸鐢?/SPAN>Hibernate鍐欑殑渚嬪瓙緲昏瘧鎴?/SPAN>JDBC錛屽ぇ瀹跺氨涓鐩簡鐒朵簡錛?/SPAN>

Connection conn = ...;         <---   session = sf.openSession();

 

conn.setAutoCommit(false);     <---   tx = session.beginTransactioin();

 

...                            <---   ...

 

conn.commit();                 <---   tx.commit(); (瀵瑰簲宸﹁竟鐨勪袱鍙?/SPAN>)

conn.setAutoCommit(true);

 

conn.close();                  <---   session.close();

鐪嬫槑鐧戒簡鍚э紝Hibernate鐨?/SPAN>JDBCTransaction鏍規湰灝辨槸conn.commit鑰屽凡錛屾牴鏈鏃犵縐樺彲璦錛屽彧涓嶈繃鍦?/SPAN>Hibernate涓紝Session鎵撳紑鐨勬椂鍊欙紝灝變細鑷姩conn.setAutoCommit(false)錛屼笉鍍忎竴鑸殑JDBC錛岄粯璁ら兘鏄?/SPAN>true錛屾墍浠ヤ綘鏈鍚庝笉鍐?/SPAN>commit涔熸病鏈夊叧緋伙紝鐢變簬Hibernate宸茬粡鎶?/SPAN>AutoCommit緇欏叧鎺変簡錛屾墍浠ョ敤Hibernate鐨勬椂鍊欙紝浣犲湪紼嬪簭涓笉鍐?/SPAN>Transaction鐨勮瘽錛屾暟鎹簱鏍規湰灝辨病鏈夊弽搴斻?/SPAN>

浜屻?/SPAN>JTATransaction

    濡傛灉浣犲湪EJB涓嬌鐢?/SPAN>Hibernate錛屾垨鑰呭噯澶囩敤JTA鏉ョ鐞嗚法Session鐨勯暱浜嬪姟錛岄偅涔堝氨闇瑕佷嬌鐢?/SPAN>JTATransaction錛屽厛鐪嬩竴涓緥瀛愶細

javax.transaction.UserTransaction tx = new InitialContext().lookup("javax.transaction.UserTransaction");

 

Session s1 = sf.openSession();

...

s1.flush();

s1.close();

 

...

 

Session s2 = sf.openSession();

...

s2.flush();

s2.close();

 

tx.commit();

榪欐槸鏍囧噯鐨勪嬌鐢?/SPAN>JTA鐨勪唬鐮佺墖鏂紝Transaction鏄法Session鐨勶紝瀹冪殑鐢熷懡鍛ㄦ湡姣?/SPAN>Session瑕侀暱銆傚鏋滀綘鍦?/SPAN>EJB涓嬌鐢?/SPAN>Hibernate錛岄偅涔堟槸鏈綆鍗曚笉榪囩殑浜嗭紝浣犱粈涔?/SPAN>Transaction浠g爜緇熺粺閮戒笉瑕佸啓浜嗭紝鐩存帴鍦?/SPAN>EJB鐨勯儴緗叉弿榪扮涓婇厤緗煇鏌愭柟娉曟槸鍚︿嬌鐢ㄤ簨鍔″氨鍙互浜嗐?/SPAN>

                  鐜板湪鎴戜滑鏉ュ垎鏋愪竴涓?/SPAN>JTATransaction鐨勬簮浠g爜

net.sf.hibernate.transaction.JTATransaction:

public void begin(InitialContext context, ...

  ...

  ut = (UserTransaction) context.lookup(utName);

  ...

鐪嬫竻妤氫簡鍚楋紵 鍜屾垜涓婇潰鍐欑殑浠g爜 tx = new Initial

                  Context?().lookup("javax.transaction.UserTransaction");

                  鏄笉鏄畬鍏ㄤ竴鏍鳳紵

public void commit() ...

  ...

  if (newTransaction) ut.commit();

  ...

JTATransaction鐨勬帶鍒剁◢寰鏉傦紝涓嶈繃浠嶇劧鍙互寰堟竻妤氱殑鐪嬪嚭鏉?/SPAN>Hibernate鏄浣曞皝瑁?/SPAN>JTA鐨?/SPAN>Transaction浠g爜鐨勩?/SPAN>

浣嗘槸浣犵幇鍦ㄦ槸鍚︾湅鍒頒簡浠涔堥棶棰橈紵 浠旂粏鎯充竴涓嬶紝Hibernate Transaction鏄粠Session涓幏寰楃殑錛?/SPAN>tx = session.beginTransaction()錛屾渶鍚庤鍏堟彁浜?/SPAN>tx錛岀劧鍚庡啀session.close錛岃繖瀹屽叏絎﹀悎JDBC鐨?/SPAN>Transaction鐨勬搷浣滈『搴忥紝浣嗘槸榪欎釜欏哄簭鏄拰JTA鐨?/SPAN>Transactioin鎿嶄綔欏哄簭褰誨簳鐭涚浘鐨勶紒錛侊紒

JTA鏄厛鍚姩Transaction錛岀劧鍚庡惎鍔?/SPAN>Session錛屽叧闂?/SPAN>Session錛屾渶鍚庢彁浜?/SPAN>Transaction錛屽洜姝ゅ綋浣犱嬌鐢?/SPAN>JTA鐨?/SPAN>Transaction鐨勬椂鍊欙紝閭d箞灝卞崈涓囦笉瑕佷嬌鐢?/SPAN>Hibernate鐨?/SPAN>Transaction錛岃屾槸搴旇鍍忔垜涓婇潰鐨?/SPAN>JTA鐨勪唬鐮佺墖鏂偅鏍蜂嬌鐢ㄦ墠琛屻?/SPAN>

鎬葷粨錛?/SPAN>

    1銆佸湪JDBC涓婁嬌鐢?/SPAN>Hibernate 蹇呴』鍐欎笂Hibernate Transaction浠g爜錛屽惁鍒欐暟鎹簱娌℃湁鍙嶅簲銆傛鏃?/SPAN>Hibernate鐨?/SPAN>Transaction灝辨槸Connection.commit鑰屽凡

    2銆佸湪JTA涓婁嬌鐢?/SPAN>Hibernate 鍐?/SPAN>JTA鐨?/SPAN>Transaction浠g爜錛屼笉瑕佸啓Hibernate鐨?/SPAN>Transaction浠g爜錛屽惁鍒欑▼搴忎細鎶ラ敊

    3銆佸湪EJB涓婁嬌鐢?/SPAN>Hibernate 浠涔?/SPAN>Transactioin浠g爜閮戒笉瑕佸啓錛屽湪EJB鐨勯儴緗叉弿榪扮閲岄潰閰嶇疆

|---CMT(Container Managed Transaction)

|

|---BMT(Bean Managed Transaction)

        |

        |----JDBC Transaction

        |

        |----JTA Transaction

 

 

 

鎻愰棶錛?/SPAN>

javax.transaction.UserTransaction tx = new InitialContext().lookup("javax.transaction.UserTransaction");

 

Session s1 = sf.openSession();

...

s1.flush();

s1.close();

 

...

 

Session s2 = sf.openSession();

...

s2.flush();

s2.close();

 

tx.commit();

s1涓嶅叧闂紝浣跨敤s2榪涜鎿嶄綔鐨勪唬鐮佷腑浣跨敤s1鍙笉鍙互錛堟垜瑙夊緱榪欐牱鏇村姞鑺傜害璧勬簮錛屼笉闇瑕佸弽澶嶇殑榪炴帴銆佸叧闂級浣?/SPAN>sf.opengSession()鏃訛紝騫舵病鏈?/SPAN>setAutoCommit(false)錛屾垜鎯抽棶鐨勬槸錛屽鏋滀笉緙栧啓浠諱綍浜嬪姟浠g爜錛屽錛?/SPAN>

Session s = sf.openSession();

......

s.close();

鏁版嵁搴撲細涓嶄細鏈夊弽搴旓紙姝ゆ椂搴旇鏄粯璁?/SPAN>AutoCommit涓?/SPAN>true錛夈?/SPAN>

涓嶄細鏈夊弽搴斻傚湪sf.openSession()

鍒涘緩Session瀹炰緥鐨勬椂鍊欙紝灝卞凡緇忚皟鐢ㄤ簡conn.setAutoCommit(false)浜嗐?/SPAN>

鍙﹀錛屾垜鎯抽棶涓涓嬶細

      <code>

      1. s.flush()鏄笉鏄繀欏葷殑

      2. s.close()鏄笉鏄竴瀹氳鍏抽棴

      </code>

鍥炵瓟錛?/SPAN>

    s.flush涓嶆槸蹇呴』鐨勶紝s.close()浼氳皟鐢ㄤ竴嬈?/SPAN>s.flush()

    s.close()姝e父鎯呭喌涓嬪簲璇ュ叧闂紝闄ら潪浣犳槸鐢?/SPAN>ThreadLocal綆$悊Session銆?/SPAN>

s1涓嶅叧闂紝浣跨敤s2榪涜鎿嶄綔鐨勪唬鐮佷腑浣跨敤s1鍙笉鍙互錛堟垜瑙夊緱榪欐牱鏇村姞鑺傜害璧勬簮錛屼笉闇瑕佸弽澶嶇殑榪炴帴銆佸叧闂級</code>

 

鍦ㄨ繖涓緥瀛愪腑鐪嬩笉鍑烘潵JTA鐨勪綔鐢ㄣ?/SPAN>

鍋囪

<code>Class A  {

  find() {

    Session s1 = sf.openSession();

    ...

    s1.flush();

    s1.close();

  }

}</code>

 

<code>Class B  {

  find() {

    Session s2 = sf.openSession();

    ...

    s2.flush();

    s2.close();

  }

}

Main {

 

  tx = ...;

  A.find();

  B.find();

  tx.commit();

}

鐪嬫槑鐧戒簡鍚楋紵JTA鐨?/SPAN>Transaction綆$悊鏄法綾昏皟鐢ㄧ殑銆?/SPAN>



嫻瘋醇 2005-07-29 10:46 鍙戣〃璇勮
]]>
絎竴涓狧ibernate渚嬪瓙http://www.tkk7.com/pirate/archive/2005/07/29/8710.html嫻瘋醇嫻瘋醇Fri, 29 Jul 2005 02:07:00 GMThttp://www.tkk7.com/pirate/archive/2005/07/29/8710.htmlhttp://www.tkk7.com/pirate/comments/8710.htmlhttp://www.tkk7.com/pirate/archive/2005/07/29/8710.html#Feedback4http://www.tkk7.com/pirate/comments/commentRss/8710.htmlhttp://www.tkk7.com/pirate/services/trackbacks/8710.html榪欐槸涓涓畝鍗曠殑渚嬪瓙

1. 鍦╩ySQL涓緩绔嬩竴寮燯SER琛ㄣ?/P>

CREATE TABLE USER (
    user_id CHAR(32) NOT NULL PRIMARY KEY,
    name VARCHAR(16) NOT NULL,
    sex CHAR(1),
    age INT
);

2. 寤虹珛涓涓猵ojo

package com.xy;

public class User {
    private String id;
    private String name;
    private char sex;
    private int age;

    public int getAge() {
        return age;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public char getSex() {
        return sex;
    }

    public void setAge(int i) {
        age = i;
    }

    public void setId(String string) {
        id = string;
    }

    public void setName(String string) {
        name = string;
    }

    public void setSex(char c) {
        sex = c;
    }
}

3. hibernate.cfg.xml鏂囦歡

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "

<hibernate-configuration>

    <session-factory>

        <!-- 鏄劇ず瀹為檯鎿嶄綔鏁版嵁搴撴椂鐨凷QL -->
        <property name="show_sql">true</property>
        <!-- SQL鏂硅█錛岃繖閲岃瀹氱殑鏄疢ySQL -->
        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
        <!-- JDBC椹卞姩紼嬪紡 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- JDBC URL -->
        <property name="connection.url">jdbc:mysql://localhost/jiejie</property>
        <!-- 鐢ㄦ埛鍚?-->
        <property name="connection.username">root</property>
        <!-- 瀵嗙爜-->
        <property name="connection.password"></property>

        <!-- 鏄犲皠鏂囦歡 -->
        <mapping resource="User.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

4. User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "

<hibernate-mapping>

    <class name="com.xy.User" table="USER">

        <id name="id" type="string" unsaved-value="null">
            <column name="user_id" sql-type="char(32)" />
            <generator class="uuid.hex"/>
        </id>

        <property name="name" type="string" not-null="true">
            <column name="name" length="16" not-null="true"/>
        </property>

        <property name="sex" type="char"/>

        <property name="age" type="int"/>

    </class>

</hibernate-mapping>

5. 嫻嬭瘯鏂囦歡

package com.xy;

import java.util.List;
import java.util.ListIterator;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;

public class HibernateTest {
 private static Log log = LogFactory.getLog(HibernateTest.class);
 public void find() {
  SessionFactory sessionFactory;
  try {
   sessionFactory = new Configuration().configure()
     .buildSessionFactory();

   Session session = sessionFactory.openSession();

   List users = session.find("from User");

   session.close();
   sessionFactory.close();

   for (ListIterator iterator = users.listIterator(); iterator
     .hasNext();) {
    User user = (User) iterator.next();
    System.out.println(user.getName() + "\n\tAge: " + user.getAge()
      + "\n\tSex: " + user.getSex());
   }
  } catch (HibernateException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public void insert() {

  SessionFactory sessionFactory;
  try {
   sessionFactory = new Configuration().configure()
     .buildSessionFactory();

   User user = new User();
   user.setName("caterpillar");
   user.setSex('M');
   user.setAge(23);

   Session session = sessionFactory.openSession();
   Transaction tx = session.beginTransaction();
   session.save(user);
   tx.commit();
   session.close();
   sessionFactory.close();

   System.out.println("鎻掑叆鏁版嵁OK!璇峰湪MySQL鏌ョ湅緇撴灉錛?);
  } catch (HibernateException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 public static void main(String[] args) throws HibernateException {

  new HibernateTest().find();
  new HibernateTest().insert();

 }
}

6. 鏂囦歡緇撴瀯鍜屾墍鐢ㄥ埌鐨刯ar鍖?BR>

 
7. 鎿嶄綔緇撴灉

log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, user0_.age as age from USER user0_
caterpillar
 Age: 28
 Sex: M
caterpillar
 Age: 28
 Sex: M
caterpillar
 Age: 28
 Sex: M
caterpillar
 Age: 23
 Sex: M
qqqqq
 Age: 20
 Sex: M
www
 Age: 21
 Sex: M
yyy
 Age: 20
 Sex: M
yyy
 Age: 20
 Sex: M
yyy
 Age: 20
 Sex: M
yyy
 Age: 20
 Sex: M
Hibernate: insert into USER (name, sex, age, user_id) values (?, ?, ?, ?)
鎻掑叆鏁版嵁OK!璇峰湪MySQL鏌ョ湅緇撴灉錛?BR>



嫻瘋醇 2005-07-29 10:07 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲精品国产福利在线观看| 国产啪亚洲国产精品无码| 国产精品亚洲精品日韩已满| 国产精品亚洲综合网站| 全免费a级毛片免费**视频| 亚洲AV无码国产精品色| 久久久久久国产精品免费免费| 亚洲精品亚洲人成在线播放| 国产精品久久久久久久久久免费| 久久精品国产亚洲AV蜜臀色欲| 免费视频专区一国产盗摄| 97久久国产亚洲精品超碰热| 狼友av永久网站免费观看| 日韩成人精品日本亚洲| 亚洲中文字幕无码爆乳av中文| 国产免费一区二区三区免费视频| 亚洲性猛交XXXX| 久久狠狠躁免费观看| 亚洲一区在线观看视频| 在线观看成人免费视频| 麻豆91免费视频| 亚洲国产精彩中文乱码AV| 色片在线免费观看| 在线91精品亚洲网站精品成人| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲永久精品ww47| 无码免费一区二区三区免费播放 | 亚洲熟妇少妇任你躁在线观看| 国产在线观看免费不卡| 国产做国产爱免费视频| 亚洲天堂一区在线| 亚洲AV成人精品日韩一区18p| 日韩免费电影网站| 亚洲综合无码一区二区痴汉 | 免费观看亚洲人成网站| 中文字字幕在线高清免费电影| 亚洲精品在线播放视频| 免费一看一级毛片全播放| 国产成人精品免费久久久久| 狠狠色伊人亚洲综合网站色| 国产亚洲精久久久久久无码AV|