【发布时间】:2016-01-26 13:26:36
【问题描述】:
我正在使用 Hibernate 4.1.6.Final 并注意到,在启动过程中,每个实体的构造函数都会被调用。 EntityManager 实例化每个标有@Entity 的类作为测试,以获得unsavedValue 标识符。我正在使用没有映射文件的 Hibernate,只使用注释。是否可以防止休眠一次实例化每个实体,可能在注释中使用预定义的标识符?
示例: 一个简单的类,用作使用休眠保存的实体。
@Entity
public class SimpleEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id = null;
public SimpleEntity() {
System.out.println("called constructor");
}
}
调用创建一个EntityManagerFactory,在其中构造对象:
public static EntityManagerFactory getEntityManagerFactory() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hsqldb-ds");
return emf;
}
现在调用:
EntityManagerUtil.getEntityManagerFactory().createEntityManager();
已经生成控制台输出: 调用构造函数
【问题讨论】:
-
为什么这很重要?除非您在构造函数中发生了一些事情,否则我看不出它会产生什么负面影响。
-
可能不应该出现在实体构造函数中的东西。
标签: java hibernate jpa orm hibernate-mapping