Spring Roo を自分の Spring プロジェクトから削除しました。これは不要であり、Eclipse sts でビルドに多くの時間がかかりました。プッシュインを実行したところ、エンティティ オブジェクトに古い Roo ファイルのソース コードが含まれるようになりました。
PersistentContext の管理を含め、多かれ少なかれ何も変わっていませんが、これは非常に奇妙に思えます。実際、クエリを作成する必要があるたびに、EntityManager を取得するためにエンティティ クラスをインスタンス化する必要があることに気付きました。
私のエンティティクラスでは
@Configurable
@Entity
@Table(name = "angr_clienti")
public class AngrClienti {
....
@PersistenceContext
transient EntityManager entityManager;
public static final EntityManager entityManager() {
EntityManager em = new AngrClienti().entityManager;
if (em == null) throw new IllegalStateException("Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)");
return em;
}
public static List<AngrClienti> findAllAngrClientis() {
return entityManager().createQuery("SELECT o FROM AngrClienti o", AngrClienti.class).getResultList();
}
findAllAngrClientis() を呼び出すたびに、新しい AngrClienti() オブジェクトをインスタンス化してエンティティ マネージャーにアクセスするメソッド entityManager() を呼び出すのは奇妙です。
new AngrClienti().entityManager;
私はそれが非常にメモリを消費していると思うので、なぜですか?