エンティティー・マネージャーのチュートリアル: エンティティー・クラスの作成

エンティティー・クラスの作成、エンティティー・タイプの登録、およびエンティティー・インスタンスのキャッシュへの保管によって、1 つのエンティティーを持つローカル ObjectGrid を作成します。

手順

  1. Order オブジェクトを作成します。 このオブジェクトを ObjectGrid エンティティーとして識別するには、@Entity アノテーションを追加します。 このアノテーションを追加すると、オブジェクト内のシリアライズ可能な属性はすべて、属性のアノテーションを使用して属性をオーバーライドする場合を除いて、自動的に eXtreme Scale 内で保持されます。 orderNumber 属性には、この属性が 1 次キーであることを示す @Id というアノテーションが付けられています。 Order オブジェクトの例を次に示します。
    Order.java
    
    @Entity
    public class Order
    {
        @Id String orderNumber;
        Date date;
        String customerName;
        String itemName;
        int quantity;
        double price;
    }
  2. eXtreme Scale Hello World アプリケーションを実行してエンティティー操作をデモンストレーションします。 次のプログラム例をスタンドアロン・モードで実行することで、エンティティー操作をデモンストレーションすることができます。 このプログラムは、クラスパスに objectgrid.jar ファイルが追加されている Eclipse Java プロジェクトで使用します。 eXtreme Scale を使用する簡単な Hello world アプリケーションの例を次に示します。
    Application.java
    
    package emtutorial.basic.step1;
    
    import com.ibm.websphere.objectgrid.ObjectGrid;
    import com.ibm.websphere.objectgrid.ObjectGridManagerFactory;
    import com.ibm.websphere.objectgrid.Session;
    import com.ibm.websphere.objectgrid.em.EntityManager;
    
    public class Application
    {
    
        static public void main(String [] args)
            throws Exception
        {
            ObjectGrid og = 
    				ObjectGridManagerFactory.getObjectGridManager().createObjectGrid();
            og.registerEntities(new Class[] {Order.class});
    
            Session s = og.getSession();
            EntityManager em = s.getEntityManager();
    
            em.getTransaction().begin();
    
            Order o = new Order();
            o.customerName = "John Smith";
            o.date = new java.util.Date(System.currentTimeMillis());
            o.itemName = "Widget";
            o.orderNumber = "1";
            o.price = 99.99;
            o.quantity = 1;
    
            em.persist(o);
            em.getTransaction().commit();
    
            em.getTransaction().begin();
            o = (Order)em.find(Order.class, "1");
            System.out.println("Found order for customer: " + o.customerName);
            em.getTransaction().commit();
        }
    }
    このアプリケーション例は以下の操作を実行します。
    1. 自動的に生成された名前を持つローカル eXtreme Scale を初期化します。
    2. API は必ずしも必要ではありませんが registerEntities API を使用して、エンティティー・クラスをアプリケーションに登録します。
    3. セッションとそのセッションのエンティティー・マネージャーへの参照を取得します。
    4. eXtreme Scale Session を単一の EntityManager および EntityTransaction に関連付けます。 これで EntityManager が使用されます。
    5. registerEntities メソッドが Order という BackingMap オブジェクトを作成し、Order オブジェクトのメタデータをその BackingMap オブジェクトに関連付けます。 このメタデータには、属性タイプと名前とともに、キー属性と非キー属性が含まれています。
    6. トランザクションが開始し、Order インスタンスが作成されます。トランザクションにはいくつかの値が格納されています。その後、トランザクションは、EntityManager.persist メソッドの使用によって永続化されます。このメソッドでは、関連付けられているマップに組み込まれるまでエンティティーが待機していると認識されます。
    7. 次に、トランザクションがコミットされ、エンティティーが ObjectMap インスタンスに組み込まれます。
    8. 別のトランザクションが作成され、キー 1 を使用して Order オブジェクトが取得されます。EntityManager.find メソッドでは型キャストが必要です。Java SE バージョン 5 以降の Java 仮想マシンobjectgrid.jar ファイルが確実に実行されるようにするために、Java SE 5 の機能は使用されません。