我从我的 Spring 项目中删除了 Spring Roo,这是不必要的,并且构建在 eclipse sts 中花费了很多时间。我执行了一个 Push-In,我的实体对象现在包含旧 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() 它都会调用方法 entityManager() 实例化一个新的 AngrClienti() 对象来访问实体管理器。
new AngrClienti().entityManager;
我认为它非常消耗内存,那为什么呢?