在加载时验证JPA列映射

时间:2010-01-20 15:59:43

标签: java jpa eclipselink

最近,当前项目对数据库架构进行了大量更改。这些主要是样式清理,例如确保所有列都遵循一致的命名模式并且是all_in_snake_case。

我相信我们在数据库和实体中都获得了所有列引用,是否可以让JPA,EclipseLink或GlassFish执行某种“验证所有”操作,以确保每个实体列都存在并且匹配??

3 个答案:

答案 0 :(得分:0)

我的两分钱:

  • 为您的每个实体编写单元测试,以测试DAO中的映射和查询。这是值得的未来资产。
  • 您可以使用映射或注释创建数据库模式(使用eclipselink.ddl-generation自动生成表),然后使用某些数据库工具比较两个数据库模式将取决于你的数据库。也许你的DBA,如果你有,可以帮助)。

答案 1 :(得分:0)

特定于JPA实现。 DataNucleus当然可以验证您的架构是否与实体定义匹配,我确信其他实现可以做类似的事情

答案 2 :(得分:0)

只需编写一个JUnit测试,它将使用java反射获取实体的所有映射属性,然后使用SQL获取表的所有列,并比较它们,重复所有实体或表的操作。

例如,如果您使用oracle作为数据库,请使用以下查询来获取表列:

select column_name 
from user_tab_columns
where table_name = 'YOUR_TABLE';