类似于 Grails 中的 Bootstrap.groovy,如何在应用启动时添加一些初始数据?
由于在 @PostContstruct 方法中,EntityManager 在无状态会话 bean 中不可用(或者我做错了什么?),那么插入一些初始数据的正确方法应该是什么?
例如,我想在应用程序启动时在我的系统中添加一个管理员帐户。
类似于 Grails 中的 Bootstrap.groovy,如何在应用启动时添加一些初始数据?
由于在 @PostContstruct 方法中,EntityManager 在无状态会话 bean 中不可用(或者我做错了什么?),那么插入一些初始数据的正确方法应该是什么?
例如,我想在应用程序启动时在我的系统中添加一个管理员帐户。
由于在@PostContstruct 方法中,EntityManager 不可用
这不是真的,@PostConstruct
通常是从数据库中检索视图初始数据的正确位置。
当应用程序启动时,您可以使用 Singleton EJB 进行启动操作,例如添加管理员帐户,并使用以下内容注释 EJB @Startup
:
@Startup
@Singleton
public class MySingleton implements Serializable {
@PersistenceContext
private EntityManager em;
@PostConstruct
public void init() {
// here you can perform queries or transactions
}
}
Enterprise Java Bean 与 Singleton 一样,默认情况下是事务性的。在 Java EE 7 中,如果 CDI bean 使用@Transactional
.
链接: