在 JBoss 中,我们可以在部署应用程序时执行 import.sql。
可以在 Glassfish 中实现吗?我们还可以为不同的版本添加几个脚本吗?例如在 2.5 版本中,我添加了这个特定的用户记录。
我目前正在研究 DBMigration 和 LiquiBase,还有其他建议吗?或者根据经验,这两个中哪一个是可靠的?
谢谢,
czetsuya
在 JBoss 中,我们可以在部署应用程序时执行 import.sql。
可以在 Glassfish 中实现吗?我们还可以为不同的版本添加几个脚本吗?例如在 2.5 版本中,我添加了这个特定的用户记录。
我目前正在研究 DBMigration 和 LiquiBase,还有其他建议吗?或者根据经验,这两个中哪一个是可靠的?
谢谢,
czetsuya
不幸的是,经过几天的研究,我认为在 glassfish 中无法实现相同的功能。相反,另一种方法是使用@PostConstruct 方法创建一个@Startup、@Singleton 注释bean,以在Glassfish 启动时创建数据库表行。
@Singleton
@Startup
public class InitData {
@Inject
private Logger log;
@PersistenceContext
private EntityManager em;
@PostConstruct
private void init() {
log.debug("[dropship-ejb] init data");
@SuppressWarnings("unchecked")
List<Role> roles = em.createQuery("FROM Role r").getResultList();
if (roles == null || roles.size() == 0)
initData();
}
private void initData() {
// insert roles
createRole("member", "Member");
createRole("affiliate", "Affiliate");
createRole("backend", "Backend");
createRole("admin", "Administrator");
}
private Role createRole(String name, String description) {
Role r = new Role();
r.setName(name);
r.setDescription(description);
em.persist(r);
return r;
}
}