基本的なCRUD操作を次のように
1つの パッケージcn.itheima.test。 2 3 インポートcn.itcast.domain.Customer。 4 インポートcn.itcast.utils.JpaUtils。 5 輸入org.junit.Test。 6 7 インポートjavax.persistence.EntityManager。 8 インポートjavax.persistence.EntityManagerFactory。 9 インポートjavax.persistence.EntityTransaction。 10 インポートjavax.persistence.Persistence。 11 12 パブリック クラスJpaTest { 13 14 / ** 15 *测试JPA的保存 16 *ケース:データベースへのクライアントを保存する 17 JPAは、手順* 18 * 1ロード工場プロファイル作成(エンティティマネージャファクトリ)オブジェクト 19 エンティティによって* 2.エンティティマネージャファクトリマネージャは、取得した 20の * 3のGet業務をオブジェクト、オープントランザクション 21の * 4.完全なCRUD操作 22 * 5は、トランザクション(トランザクションのロールバック)をコミット 23の * 6リリースリソース 24 * / 25 @Test 26は 公共 ボイドtestSave(){ 27 // // 1。負荷プロファイルの作成工場(エンティティマネージャファクトリが)オブジェクト 28を // のEntityManagerFactory =工場のPersistence.createEntityManagerFactory(「myJpa」); 29 // // 2.エンティティマネージャエンティティマネージャファクトリの取得 30を // EM = factory.createEntityManagerのEntityManager(); 31である のEntityManager EM = JpaUtils.getEntityManager(); 32 // 3取得トランザクションオブジェクト、開口トランザクション 33である たEntityTransaction em.getTransaction TX =(); //は、トランザクションオブジェクト取得し 34である (tx.begin ); // 開いているトランザクション 35 // 4.完全なCRUD操作:データベース保存するには、クライアント 36 の顧客=顧客の新しい新しい顧客を(); 37 [ customer.setCustName( "チーチュアンポッドキャスト" ); 38で customer.setCustIndustry( "教育" ); 39 // 保存し、 40 EM。持続(顧客); // 保存操作 41 // 5トランザクションのコミット 42であり ; tx.commit() 43である // 6リリースリソース 44がある em.close(); 45 // factory.close(); 46である 47 } 48 49 / ** 50 * IDを顧客に応じて照会 51 *照会するfindメソッドを使用します。 52 * 1.オブジェクトクエリ自体は、現在のターゲット顧客である 53 データベースのSQL文を照会するfindメソッドを呼び出すとき* 2に送信されます 54 * 55 *今のロード 56 * 57 * 58 * / 59 @Test 60 公共 ボイドtestFind(){ 61は // のEntityManagerツールによって取得された1 である62 のEntityManagerはEntityManager = JpaUtils.getEntityManager(); 63である // 2取引口 64 たEntityTransaction TX = ; entityManager.getTransaction() 65 TX。 ()開始; 66 // 3. CRUDを-顧客IDクエリを 67 / ** 68 *検索:IDをクエリデータ 69 *クラス:データ型のクエリの結果は、エンティティクラスのバイトコードにパッケージすることが 70 * ID:主キーの値の問い合わせ 71 * / 72 カスタマー= EntityManagerのお客様。検索(お客様。クラス、1L ); 73です // System.out.print(顧客)のは、 74 // 4.トランザクションコミット 75 ; tx.commit() 76の // 5.リリースリソース 77 EntityManagerを。クローズ(); 78 } 79 80 / ** 81 顧客IDクエリ* 82 * getReference方法 83 * 1オブジェクトを取得し、動的プロキシオブジェクトにある 84 * 2の方法は、直ちにコールgetReference SQLステートメントは、データベース照会送信しない 85 * *文は、SQLクエリが送信されますとき、クエリ結果オブジェクトを呼び出す:使用する際に、データベースを照会するためにSQL文を送信するとき 86 * 87 *遅延ローディング(遅延ロード) 88 *得られた動的プロキシオブジェクトである 89 * *使用した場合、照会しますかの使用 90 * / 91である @Test 92 公共 ボイドtestReference(){ 93 // 1。ツールによって取得されたEntityManagerの 94 のEntityManagerのEntityManager = JpaUtils.getEntityManager(); 95 // 2.取引口 96 たEntityTransaction TX = entityManager.getTransaction(); 97 tx.begin(); 98 // 3 CRUD - IDの顧客からの問い合わせ 99 / ** 100 * GetReference:クエリIDに基づいてデータ 101 *クラス:データ型のクエリの結果は、包装されるエンティティクラスバイトコード 102 * ID:主キー値照会 103 * / 104 。カスタマー=カスタマーのEntityManager GetReference。(顧客クラス、 1L ); 105 System.out.print(顧客)の、 106 // 4.トランザクションをコミット 107 (tx.commit)を、 108の // 5リリースリソース 109 entityManager.close(); 110 } 111 112 / ** 113 *顧客のケースを削除する 114 * 115 * / 1 16 @Test 117 公共 ボイドtestRemove(){ 1つの18 // ツールによって取得された1のEntityManager 119 のEntityManagerはEntityManager = JpaUtils.getEntityManager(); 120 // 2.サービス 121 たEntityTransaction TX = entityManager.getTransaction(); 122 TX。 ;始める() 123 // クライアントを削除する- 3 CRUD 124 125 // I顧客IDクエリ 126 顧客=顧客EntityManager.find(顧客。クラス、1L ); 127 // 削除を完了するためにII removeメソッド呼び出し 128 。EntityManagerの削除(顧客)を、 129 130 // 4.トランザクションコミット 131である (tx.commit); 132 // 5リリースリソース 133 entityManager.close(); 134 } 135 136 / ** 137は、 顧客を更新するように動作する* 138 マージ*(オブジェクト) 139 * / 140 @Test 141が 公共 ボイドtestUpdate(){ 142 // のEntityManagerツールによって取得された1. 143 のEntityManagerのEntityManager = JpaUtils.getEntityManager(); 144 //トランザクションを入れます 145 = TXたEntityTransaction entityManager.getTransactionを(); 146 tx.begin(); 147の // 3. CRUD -更新操作 148 149 // 私は、クライアントクエリ 150 カスタマー顧客= EntityManager.find(お客様。クラス、1L ); 151 // II更新クライアント 152 customer.setCustIndustry( "IT教育" ); 153 。EntityManagerのマージ(顧客); 154 155 // 4.トランザクションコミット 156 )(tx.commitを、 157 // 。5。リリースリソース 158 entityManager.close(); 159 } 160 161 }
説明:()とgetReference()の違いを見つけます:
IDの顧客の問い合わせに応じて
使用して検索する方法を照会するには:
1.オブジェクトクエリオブジェクト自体は、現在のクライアントで
データベースのSQL文を照会するfindメソッドを呼び出すときに送信されます。2.
すぐにロードされ
============= ========================================
顧客クエリIDのに従ってgetReferenceの方法で
取得した1オブジェクトは、動的プロキシオブジェクトである
2.コールgetReferenceメソッドはすぐにデータベースを照会するためにSQL文を送信しない
ときに使用するデータベースクエリを実行するSQL文を送信するとき、:SQL文がクエリを送信しますと、クエリの結果オブジェクトを呼び出すとき*
遅延読み込みを(遅延ロード)
* GETは動的プロキシオブジェクトで
使用するための*は、どのような使用を照会う