皆さん、Java SEプロジェクトでJPAのEclipseリンクを使用しています。私はデータベース内の各テーブルに "jpa controller"クラスを使用しています(正しい方法です)。私はまた、 "jpaコントローラクラス"ごとにEntityManagerFactoryを提供していますので、entitymanagerを取得できます。プログラムが起動すると、AnalyzerPUのログインが2回成功したことが示されます。私は1つのEntityManagerFactoryだけを使うべきですか?それは私がそれを持っているすべての人がログインを示しているようです。私が続けると、データベースの各テーブルに1つずつ、12のログインがあります。私はこれが正しいことができないことを知っていますか?永続ユニットの複数のログイン?
public class PkgLineControllerImpl extends AbstractController implements PkgLineController {
private EntityManagerFactory emf = null;
public PkgLineControllerImpl() {
super(StateHistoryImpl.class);
emf = Persistence.createEntityManagerFactory("StateHistoryAnalyzerPU");
}
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
@Override
public List<PkgLine> findAll() {
EntityManager em = getEntityManager();
List<PkgLine> pkgLineList = new ArrayList<PkgLine>();
try {
pkgLineList = em.createNamedQuery("PkgLine.findAll").getResultList();
return pkgLineList;
} finally {
em.close();
}
}
}
これはI "mは私のコントローラをレイアウトする方法である。任意の助けてくれてありがとう。
時にはそれがこれを行います。
[EL Info]: 2011-02-01 14:34:07.991--ServerSession(18450577)--EclipseLink, version: Eclipse Persistence Services - 2.0.2.v20100323-r6872
[EL Info]: 2011-02-01 14:34:08.381--ServerSession(18450577)--fileStateHistoryAnalyzerPU login successful
100
200
100
200
100
null
null
null
null
null
時にはそれがこれを行います
Persistence Services - 2.0.2.v20100323-r6872
[EL Info]: 2011-02-01 14:34:08.381--ServerSession(18450577)--fileStateHistoryAnalyzerPU login successful
100
200
100
200
100
Persistence Services - 2.0.2.v20100323-r6872
[EL Info]: 2011-02-01 14:34:08.381--ServerSession(18450577)--fileStateHistoryAnalyzerPU login successful
null
null
null
null
null
nullはJPAControllerクラスのメソッドの1つで、いくつかのデータを返すもので、その番号はデータを返す他のJPAコントローラクラスです。私は1つのentitymanagerfactoryをAbstractClassに入れましたが、まだそれをやっています。
私の投稿を更新しました。だから私が持っているすべてのメソッドにEntityManagerFactory "login"を持たせるのはいいですか? –
複数のスレッドを使用していますか? 1つの永続ユニットに対してclose()を行わない限り、1つのログインのみを取得する必要があります。通常、EntityManagerFactoryを静的変数で管理して、1つしか存在しないようにする必要があります。 – James
こんにちは、ありがとう。いいえ、私は複数のスレッドを使用していませんが、可能性があります。私は実際には1つのmanagerfactory(static final)を作成し、それをjpaコントローラクラスに渡してentitymanagersを作成しました。これは、マルチスレッドのアプリケーションでOKだろうか? –