0

私はいくつかの JPA に取り組んでいますが、あなたが書かなければならないいくつかの起動コードに少し混乱しています。

EntityManagerFactory factory = Persistence.createEntityManagerFactory("sample");
EntityManager manager = factory.createEntityManager();
EntityTransaction transaction = manager.getTransaction();

これら 3 つの変数はすべて、型としてインターフェイスを持ちます。どうすれば次のようなことができますか

manager.persist()
transaction.commit()

インターフェイスをインスタンス化できない場合など?

4

4 に答える 4

2

インターフェイスはインスタンス化できませんが、インターフェイス参照は、そのインターフェイスを実装する任意のクラスのオブジェクトを保持できます。だからあなたの場合

EntityManagerFactory factory 

によって返される、それを実装するクラスのオブジェクトを保持しているインターフェースのリファレンスです:

Persistence.createEntityManagerFactory("sample");

したがって、このステートメントは正しくなります。

EntityManagerFactory factory = Persistence.createEntityManagerFactory("sample");
于 2013-07-17T17:49:00.907 に答える