在JBoss中,我们可以在部署应用程序时执行import.sql。
可以在Glassfish中实现吗?我们还可以为不同的版本添加几个脚本吗?例如,在2.5版中,我添加了这个特定的用户记录。
我目前正在关注DBMigration和LiquiBase,还有其他建议吗?或者2中哪一个是可靠的经验基础?
谢谢,
czetsuya
答案 0 :(得分:0)
不幸的是,经过几天的研究,我认为在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;
}
}