0

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

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

我目前正在研究 DBMigration 和 LiquiBase,还有其他建议吗?或者根据经验,这两个中哪一个是可靠的?

谢谢,
czetsuya

4

1 回答 1

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;
    }
}
于 2012-12-24T08:40:10.963 回答