Eclipse开发EJB3 - EclipseLink属性

Glassfish v3使用EclipseLink作为默认的JPA 2.0参考实现。实际使用中,可以利用EclipseLink的属性来完成一些有趣的功能。

 

在JPA的Persistence Unit配置文件persistence.xml里,可以通过Property元素来指定一些每个JPA实现特有的属性。对于EclipseLink而言,可以通过设置属性完成诸如自动更新schema,或者生成Entity的DDL脚本的功能。

 

自动更新Schema

Eclipse开发EJB3 为例,如果把TennisEJB项目下的persistence.xml改成:

那么就能在每次把EJB部署到Glassfish上时,把Persistence Unit中所有Entity的改动同步更新至数据库的schema。这个过程(包括生成DDL脚本,并且在数据库执行生成的脚本)都是由Glassfish自动完成。

这样就不用在改完Entity后,手工去更新数据库的schema了。

 

生成DDL脚本

如果使用如下的persistence.xml

每次部署EJB时,Glassfish会在eclipselink.application-location指定的位置,生成名为eclipselink.create-ddl-jdbc-file-name和eclipselink.drop-ddl-jdbc-file-name的DDL脚本。

这样可以检查Glassfish更新schema使用的DDL语句。

 

这里我把eclipselink.ddl-generation.output-mode设为both,照道理Glassfish应该先在指定位置生成DDL脚本,然后在数据库执行DDL语句。很奇怪的是,Glassfish只是生成了DDL脚本,而并没有更新schema,不知道这是为啥。

 

Tips:

如果eclipselink属性不起作用,可以试着把eclipse中的servers标签页里的glassfish server删掉,再重新建一个新的glassfish server。

 

参考

Using EclipseLink JPA Extensions for Schema Generation

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭