2010-05-27 94 views
3

我们正在开始使用JPA的项目编码阶段。我们使用Netbeans中的工具根据模式生成我们的JPA实体。它工作得很好,但从那以后,我们一直不得不自定义实体。维护JPA实体

我们为我们的模式做了一个体面的大小改变(添加了一个表格,并且互换了其他关系),并且因此需要更新我们的实体。我们无法重新生成它们,因为我们必须去重新应用我们所有的定制,所以我们手工完成了所有的定制。没什么大不了的,只是我预计会花费更多时间。

定制是我们添加的命名查询,级联类型,我们自己的String方法,equals和散列码方法。我想过创建扩展实体以添加toString,equals和hascode方法的类,这样如果我们重新生成它们,它们就不会丢失。但我不确定Cascade类型和命名查询。

有没有更好的方法,还是这只是一厢情愿?

回答

1

我相信这只是一厢情愿的想法。生成实体并扩展它们只会给你带来一系列不同的问题。您生成的实体必须注释为@MappedSuperclass,并且不会有表名 - 再加上您的扩展可能需要重复一些注释,此外,您有时必须调整您的名称查询自定义。只是一个麻烦。

一般来说,从数据库模式生成实体是一次性事情,要永久维护。

但是,从实体生成数据库模式可能需要较长时间。但是,即便如此,您仍然必须谨慎地管理模式迁移的问题。

底线 - 同步持久实体和数据库模式需要仔细的手动工作。

+0

感谢您的回答。这几乎是我曾想过的。我想我只是希望自己做错了事,或者不以正确的方式思考,并且必须有更好的方式。 – 2010-07-09 02:54:05

+0

更多可能有用的信息可以在这里找到:http://stackoverflow.com/questions/2052781/support-for-schema-migrations-with-jpa – HDave 2010-07-09 04:36:59