Glassfish版本化了import.sql和update.sql的执行

时间:2012-11-11 07:51:40

标签: hibernate jpa-2.0 glassfish-3

在JBoss中,我们可以在部署应用程序时执行import.sql。

可以在Glassfish中实现吗?我们还可以为不同的版本添加几个脚本吗?例如,在2.5版中,我添加了这个特定的用户记录。

我目前正在关注DBMigration和LiquiBase,还有其他建议吗?或者2中哪一个是可靠的经验基础?

谢谢,
czetsuya

1 个答案:

答案 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;
    }
}