JPA(三)JPA API初探侦

4078 ワード

JPA(三)JPA API初探侦
ラベル:JPA、API
Persistence類
このクラスは、EnttityManager Factoryのインスタンスを取得するために使用されます。このクラスにはcreateEntityManager Factoryという静的な方法が含まれています。
  • createEntityManager Factory方法は、以下の2つのリロードバージョンがあります。
  • パラメータを有する方法は、JPAプロファイルのpersistence.xmlの耐久化ユニット名をパラメータ
  • とする。
  • は2つのパラメータの方法を持っています。前のパラメータは同じ意味で、後のパラメータMapタイプはJPAの関連属性を設定するために使用されます。この場合、他の場所で設定された属性は無視されます。Mapオブジェクトの属性名は、JPA実装ライブラリプロバイダの名前空間によって規定された属性名でなければならない。コードの例は以下の通りです。
  •     //  EntityManagerFactory  
        String persistenceUnitName = "JAP-1";  //              
        EntityManagerFactory factory = Persistence.createEntityManagerFactory(persistenceUnitName);
    EnttityManager Factoryインターフェース
    主にEnttityManagerの例を作成します。このインターフェースは主に以下の4つの方法があります。
  • createEntityManager()は、エンティティマネージャオブジェクトのインスタンスを作成するために使用されます。
  • createEntityManager(Map map):エンティティマネージャのオブジェクトインスタンスを作成するための重み付け方法であり、MapパラメータはEnttityManagerの属性を提供するために使用されます。
  • isOpen():EnttityManager Factoryが開いているか確認します。エンティティマネージャ工場が作成された後は常にオープン状態です。
  • close():EnttityManager Factoryをクローズします。EnttityManager Factoryをオフにすると、すべてのリソースがリリースされます。isOpen()メソッドテストはfalseに戻ります。他の方法は呼び出しできません。そうしないとIllgal Station異常を引き起こします。
  •     //  EntityManager  
        EntityManager manager = factory.createEntityManager();
    EnttityManager
    JPA仕様では、EnttityManagerは耐久化を完了するためのコアオブジェクトです。エンティティは、通常のJavaオブジェクトとして、EnttityManagerを呼び出して、それを永続化させた後だけ、永続化対象となります。EnttityManagerオブジェクトは、エンティティクラスのグループとベースデータソースの間でO/Rマッピングの管理を行います。これはEnttityBenを管理して更新することができます。ヘビノキキーはEntity Beaビンを検索して、またJPQL文でエンティティを検索することができます。
        //    
        EntityTransaction transaction = manager.getTransaction();
        transaction.begin();
    findメソッド
    指定されたOIDに対応するエンティティクラスのオブジェクトを返します。このエンティティが現在の持続化環境に存在する場合、キャッシュされたオブジェクトを返します。さもないと新しいEntityを作成して、データベースに関する情報をロードします。OIDがデータベースに存在しない場合は、nullを返します。第1のパラメータは、照会されたエンティティタイプであり、第2のパラメータは、検索対象エンティティのプライマリキー値である。
      //   Hibernate session  find  
      @Test
      public void testFind() {
        Customer customer = manager.find(Customer.class,1);
        System.out.println("----------------------------");
        System.out.println(customer);
      }
    get Reference(Class entityClass,Object prmaryKey)方法
    find()と同様に、キャッシュに指定されたEnttityが存在しないと、EnttityManagerはEnttityクラスのエージェントを作成しますが、データベースの情報はすぐに読み込まれません。このEnttityの属性は初めてなので、このOIDがデータベースに存在しないと、getReference()はnull値に戻りません。EnttityNot FoundExceptionを投げるのです。
      //   Hibernate    load   
      @Test
      public void testGetReference(){
        Customer customer = manager.getReference(Customer.class,1);
        System.out.println(customer.getClass().getName());
        System.out.println("----------------------------");
        System.out.println(customer);
      }
    persist(Object entity)方法
    新しく作成したEntityをEnttityManagerに組み入れるための管理です。この方法が実行されると、入力されたpersist()方法のEntityオブジェクトは持続化状態に変換される。persist()方法が入ってきたEntityオブジェクトがすでに恒久化されているなら、persist()方法は何もしない。削除状態のEntityをpersist()操作すると、耐久化状態になります。遊離状態のエンティティに対してpersist()の動作を実行すると、persist()の方法でEnttityExist Exceptionを投げ出すことがあります(fluushまたはトランザクションの提出後に投げることもあります)
      /**
       *     Hibernate  save   ,               
       *     :     Id       Insert   ,      
       */
      @Test
      public void testPersistence(){
        Customer customer = new Customer();
        customer.setAge(12);
        customer.setEmail("123");
        customer.setLastName("Tom");
        customer.setCreateDate(new Date());
        customer.setBirthday(new Date());
        manager.persist(customer);
        System.out.println("Id=" + customer.getId());
      }
    remove(Object entity)方法
    インスタンスを削除します。インスタンスが管理されている場合、すなわちデータベースエンティティレコードに関連付けられている場合、関連するデータベースレコードは同時に削除される。
      /**
       *     Hibernate  delete   ,              
       *  JPA             ,   Hibernate            ,         
       */
      @Test
      public void testRemove(){
        //      ,              ,        
    //    Customer customer = new Customer();
    //    customer.setId(3);
    
        //     
        Customer customer =manager.find(Customer.class, 3);
        manager.remove(customer);
      }