如何在Hibernate中动态添加实体?

Mor*_*ndi 16 java hibernate spring-mvc datapersistance

我是一名java开发人员.我正在使用spring 4.0.1hibernate 4.2.21.我有一个课程如下:

@Entity
@Inheritance(...)
public abstract class Feature{
   @Id
   @GeneratedValue
   protected Long id;

   ...

}
Run Code Online (Sandbox Code Playgroud)

现在我有很多课程如下:

Label.java类:

@Entity
public class Label extends Feature{
   protected String str;

   ...
}
Run Code Online (Sandbox Code Playgroud)

Point.java类:

@Entity
public class Point extends Feature{
   protected Integer intg;

   ...
}
Run Code Online (Sandbox Code Playgroud)

我有超过20个从Feature类扩展的Entity 类.有没有办法在没有编写硬代码的情况下动态地将这些类(例如LabelPoint)添加到项目中?

更新:

例如,Hibernate从数据库中获取数据,然后根据这些数据创建模型.

  1. 可能吗?
  2. 我该怎么办?

Sha*_*mud 6

我认为它不是一个需要动态更改的好数据库设计.这听起来冗长而且不一致.再次观察您的域并尝试设计一个不会在运行时更改的正确实体关系.


Fra*_*dez 6

您可以尝试收集所需的数据来构建模型并hbm.xml为每个实体生成一个hibernate 文件(xml格式,并且在阅读更新中描述的所需数据后很容易用java生成)

之后,您可以按照http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html#configuration-programmatic以编程方式创建一个hibernate配置对象.

我想,如果我理解你的问题,那么你可以达到你想要的效果.


Jos*_*och 5

我想你想在运行时生成你的实体类,而不是你必须编写你的java文件并编译它等等.如果这是您的要求,您可以使用像javassist这样的字节代码生成器在运行时生成和注释您的类文件.然后,您可以使用JPA,Hibernate和任何其他ORM框架将其持久化到您的表中.我正在写一个基于xml文件的类生成器.在未来几天它将完成,我将给你一个链接到我的github.因此,您可以使用它来生成实体类.祝你今天愉快:)