呉ユーキション - 自然生まれのフライ級JAVA EEエンタープライズアプリケーション開発Struts2Sping4Hibernate統合開発研究ノート:Hibernate_batchUpdate2

<?xml version = "1.0"エンコード= "GBK"?> 
<プロジェクト名= "冬眠"のbasedir = "" デフォルト = ""> 
    <プロパティ名= "SRC"値= "SRC" /> 
    <プロパティ名= "DEST"値= "クラス" /> 

    <パスID = "クラスパス"> 
        <ファイルセットDIR =」../。 ./lib "> 
            <名前を含める=" ** / *。JAR "/> 
        </ファイルセット> 
        <pathelementパス=" $ {DEST} "/> 
    </パス> 

    <ターゲット名="コンパイル"DESCRIPTION ="コンパイルすべてのソースコード"> 
        <削除DIR =" $ {DEST} "/> 
        <
        <javacのDESTDIR = "$ {DEST}"デバッグ= "true"をincludeantruntime = "yes"を
            廃止 = "false"を最適化= "false"をfailonerror = "真の"> 
            <SRCパス= "$ {SRC}" /> 
            <クラスパスREFID = "クラスパス" /> 
            <compilerarg値= " - Xlint:廃止" /> 
        </ javacの> 
    </ target>を

    <ターゲット名= "実行"の説明= "ファイル名を指定して実行メインクラスが"依存= "コンパイル"> 
        <javaのクラス名= "lee.UserManager"フォーク= "yes"をfailonerror = "真の"> 
            <クラスパスREFID = "クラスパス" /> 
        </ javaの>
    </ target>を

</プロジェクト>
<xmlのバージョン= "1.0"エンコード= "GBK"?> 
<! - DTDは、情報Hibernate設定ファイルを指定します。 - > 
<DOCTYPE hibernate-!設定PUBLIC
     " - //休止/ Hibernate構成DTD 3.0 // EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<! -コンフィギュレーションのHibernate設定ファイルのルート要素である- > 
<休止-設定> 
    の<session-工場の> 
        <! -指定駆動するためのデータベース接続- > 
        <プロパティ名=「connection.driver_class」>はcom.mysql.jdbc.Driver </プロパティ> 
        <! -休止状態は、アプリケーション・データベースに接続されたURLは、データベース接続を指定名前- > 
        <プロパティ名= "connection.url"> JDBC:MySQLの:// localhostの/休止状態</プロパティ> 
        <! -データベースへの接続を指定したユーザ名- >/プロパティ> 
        <プロパティ名= "connection.username">ルート</プロパティ>
        <! -指定したデータベースに接続するためのパスワード- > 
        <プロパティ名=「connection.password」> 32147 </プロパティ> 
        <! - -接続プールを指定の最大接続数を> 
        <プロパティ名=「hibernate.c3p0。 MAX_SIZE "> 20 </プロパティ>です
        ! - -接続プールは、接続の最小数を指定> < 
        hibernate.c3p0.min_size「> 1 </プロパティ>。<プロパティ名=" 
        <! -接続タイムアウト指定した接続プール期間- > 
        <プロパティ名= "hibernate.c3p0.timeout"> 5000 </プロパティ> 
        <! -キャッシュStatementオブジェクトの接続プールの最大数を指定- > 
        <プロパティ名= "hibernate.c3p0.max_statements"> 100 </プロパティ> 
        <プロパティ名= "hibernate.c3p0.idle_test_period"> 3000 </プロパティ> プロパティ名= "hibernate.c3p0.idle_test_period"> 3000 </プロパティ> 
        <プロパティ名= "hibernate.c3p0.acquire_increment"> 2 </プロパティ>
        <名=プロパティ"hibernate.c3p0.validate"> trueに </プロパティ> 
        <! -方言指定されたデータベース- >
        <プロパティ名= "方言"> org.hibernate.dialect.MySQL5InnoDBDialect </プロパティ> 
        <! -必要に応じて、自動的にデータベースを作成します- > 
        <プロパティ名= "hbm2ddl.auto">更新</プロパティ> 
        <! - > - SQLを生成Hibernateは永続表示動作
        <プロパティ名= "show_sql"> trueに </プロパティ> 
        <! - > - SQLスクリプトは、出力をフォーマットします
        。<プロパティ名= "hibernate.format_sql" > trueに </プロパティ> 
        <! -すべての永続クラスのクラス名のリスト- > 
        <マッピングクラス = "org.crazyit.app.domain.User" /> 
    </セッション・ファクトリー> 
</ Hibernateは、設定>
パッケージorg.crazyit.app.domain; 

輸入のjavax.persistence *。;
/ ** 
 *内容:
 * <BR/>网站:<a href=" "> http://www.crazyit.org 疯狂のJava联盟</a>の
 * <BR/>著作権(C)、2001年から2016年、 Yeeku.H.Lee 
 * <BR/>このプログラムは著作権法により保護されています。
 *プログラム名<BR/>:
 * <BR/>日:
 * @author   Yeeku.H.Lee [email protected] 
 * @version   1.0
  * / 
@Entity 
@Table(名前 = "user_inf" パブリック クラスユーザー
{ 
    / / 定义标识属性 
    @Id @Column(名前=」
    @GeneratedValue(戦略 = GenerationType.IDENTITYを)
     プライベート整数ID;
     プライベート文字列名;
     プライベート int型の年齢;
     プライベート文字列の国籍; 

    // 引数なしのコンストラクタ
    パブリックユーザーは、()
    { 
    } 
    // コンストラクタは、すべてのメンバ変数を初期化
    パブリックユーザーを(名前ストリング、整数年齢、国籍文字列)
    { 
        この .nameの= 名;
         この .age = 年齢;
         この .nationality = 国籍; 
    } 

    // セッターとゲッターメソッドのID
    公共 ボイドSETID(整数ID)
    { 
        この .ID = ID。
    } 
    パブリック整数のgetId()
    { 
        戻り 、この.IDと、
    } 

    // 名前的セッター和ゲッター方法
    公共 ボイドのsetName(文字列名)
    { 
        この .nameの= 名前。
    } 
    パブリック文字列のgetName()
    { 
        戻り 、この.nameのを、
    } 

    // 年齢的セッター和ゲッター方法
    公共 のボイド setAge(int型の年齢)
    { 
        この .age =年齢; 
    } 
    公共 INT getAge()
    { 
        戻り 、この.ageと、
    } 

    // 国籍的セッター和ゲッター方法
    公共 ボイドsetNationality(文字列国籍)
    { 
        この .nationality = 国籍。
    } 
    パブリック文字列getNationality()
    { 
        戻り 、この.nationalityと、
    } 
}
パッケージリー; 

輸入 org.hibernate *。;
輸入 org.hibernate.cfg *。;
輸入 org.hibernate.service *。;
輸入 org.hibernate.boot.registry *。;
/ ** 
 *内容:
 * <BR/>网站:<a href=" "> http://www.crazyit.org 疯狂のJava联盟</a>の
 * <BR/>著作権(C)、2001年から2016年、 Yeeku.H.Lee 
 * <BR/>このプログラムは著作権法により保護されています。
 *プログラム名<BR/>:
 * <BR/>日:
 * @author   Yeeku.H.Lee [email protected] 
 * @version   1.0
  * / 
パブリック クラスHibernateUtilの
{ 
    公共の 静的な 最終のSessionFactoryのSessionFactory; 

    静的
    { 
        試み
        { 
            // デフォルトの設定ファイルを作成hibernate.cfg.xmlの設定例 
            設定CFG = 新しい新しいコンフィギュレーション()
                .configure(); 
            // Configurationインスタンスには、SessionFactoryのインスタンスを作成し 
            てServiceRegistryてServiceRegistryを= 新しい新しいStandardServiceRegistryBuilder()
                。.applySettings(cfg.getProperties())を作成(); 
            のSessionFactory = cfg.buildSessionFactory(てServiceRegistry); 
        } 
        キャッチ(ThrowableのEX)
        { 
            System.err.println( +「のSessionFactoryは初期作成に失敗しました。」EX)を、
             スロー 新しい新しいExceptionInInitializerError(EX); 
        } 
    } 

    // ThreadLocalのスレッド同期する必要がなくなり、共有データへの複数のスレッドを分離することができ
    パブリック 静的 最終のThreadLocal <セッション> セッション
         = 新しい新規のThreadLocal <セッション> (); 

    公共の 静的セッションcurrentSession()が
         スロー無地HibernateExceptionで
    { 
        セッションS = Session.getを();
         //スレッドは、セッションは、新しいセッションが作成されていない場合
        IF(S == NULL 
        { 
            S = sessionFactory.openSession()を;
             // セッションで得られたセッション変数記憶ThreadLocal変数
            session.set(S); 
        } 
        戻り; Sを
    } 

    パブリック 静的 ボイド)(closeSession
         スロー普通HibernateExceptionで
    { 
        セッションS = Session.get();
         IF(S!= NULL 
            S。CLOSE(); 
        session.set(NULL );  
    }
}
パッケージリー; 

輸入org.hibernate.Transaction。
インポートのorg.hibernate.Session; 

インポート org.crazyit.app.domain *。;
/ ** 
 *内容:
 * <BR/>网站:<a href=" "> http://www.crazyit.org 疯狂のJava联盟</a>の
 * <BR/>著作権(C)、2001年から2016年、 Yeeku.H.Lee 
 * <BR/>このプログラムは著作権法により保護されています。
 *プログラム名<BR/>:
 * <BR/>日:
 * @author   Yeeku.H.Lee [email protected] 
 * @version   1.0
  * / 
パブリック クラスのUserManager 
{ 
    パブリック 静的の 無効メイン(文字列[]引数)をスロー例外
    { 
        のUserManager MGRを = 新しい新規のUserManager(); 
        mgr.updateUsers(); 
        HibernateUtil.sessionFactory.closeを(); 
    } 
    プライベート ボイド updateUsers()スロー例外
    { 
        // オープンセッション 
        セッション=セッションHibernateUtilの。 currentSession();
         // 開始トランザクション 
        トランザクションTX = session.beginTransaction();
         // バッチ更新HQL文の定義 
        文字列hqlUpdate = "ユーザー名を更新= SET U:NEWNAME"を;
         //は更新を実行します
        INT updatedEntities = session.createQuery(hqlUpdate)
            .setString( "NEWNAME"を、 "新名字" 
            .executeUpdate(); 
        // 提交事务
        tx.commit(); 
        HibernateUtil.closeSession(); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/tszr/p/12369993.html