是否可以在运行时从数据库模式生成JPA实体类?

时间:2009-05-15 20:56:29

标签: java hibernate jpa code-generation persistence

像Netbeans这样的IDE允许通过持久化上下文生成实体类。如果您有权访问底层生成方法(不确定它是外部工具还是I​​DE的一部分),您可以在运行时动态生成数据库实体类吗?这个想法是你可以挂钩到使用反射的实体类。

我知道你可以采用另一种方式从实体类生成数据库,但是由于我的工作环境中的权限问题,这是不行的。但是,如果您反转该过程并从数据库中提取类,则在我的环境中可能是可行的。这个想法是数据库将作为单点配置/控制。

3 个答案:

答案 0 :(得分:2)

这在理论上是可行的,但重点是什么? Java是静态类型的,因此您只能 能够通过反射使用生成的类,并且您无法为它们提供行为,因此删除了对象关系映射的整个点。将数据加载到地图中或仅使用SQL记录集会更方便。

如果您有现有架构,则可以编写以您的应用程序需要的方式运行的类,并以声明方式将它们映射到架构上。这样,代码就是应用程序逻辑中最简单的表达式,并且与持久性无关。

答案 1 :(得分:1)

您可以在JBoss网站上找到一个工具,用于从数据库到Java对象的逆向工程。

源代码可用,你应该深入挖掘!

https://www.jboss.org/tools/download/stable.html

答案 2 :(得分:1)

假设您正在使用Hibernate,您可以使用Hibernate Tools来生成数据库架构。虽然主要是为Eclipse和Ant设计的,但理论上可以将其链接到其中并像其他任何JAR一样调用它。