1

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;

私はそれが非常にメモリを消費していると思うので、なぜですか?

4

1 に答える 1