2012-11-11 12 views
0

在JBoss中,我們可以在部署應用程序時執行import.sql。Glassfish版本化執行import.sql和update.sql

它可以在Glassfish中實現嗎?我們也可以爲不同的版本添加幾個腳本嗎?例如在版本2.5中,我添加了這個特定的用戶記錄。

我目前正在查看DBMigration和LiquiBase,有沒有其他建議?或者哪兩個是可靠的經驗基礎?

感謝,
czetsuya

回答

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