【问题标题】:How to create Java POJO class dynamically?如何动态创建 Java POJO 类?
【发布时间】:2011-10-30 13:10:23
【问题描述】:

我在这个网站上看到了一篇关于动态 POJO 生成的帖子。我现在也有类似的要求。

我在数据库中有一些表。我希望每个表都有一个 POJO 类,其中包含字段和相应的 getter 和 setter。这些类是动态创建的。创建这些类后,我应该在其他类中使用这些 setter 和 getter 来获取和设置数据并返回 Java 对象。

我已经看到了 BCEL、CGLIB 和其他一些开源工具,但找不到合适的例子。你能帮帮我吗?

【问题讨论】:

  • StackOverflow 作为一个社区工作,通过将问题和答案保留在网站上来帮助每个人,以便其他人受益。请不要要求电子邮件通信。
  • 我投了反对票,因为整个概念太糟糕了,我想不出还能做什么。不要代码生成,不要使用 bean,不要使用 setter 和 getter(顺便说一句,没有业务逻辑的具有 setter 和 getter 的 POJO 称为 bean 模式,pojo 这个词只是真正需要区分 bean(需要setter和getter)来自一个没有任何要求的普通旧Java对象.您应该使用的是针对您的特定情况的哈希图,因为bean将在代码完成后创建(通过用户输入,您说)或类似的结构。

标签: java class dynamic creation


【解决方案1】:

您是否查看过专门为此目的创建的任何 ORM(对象关系映射)框架?例如,Hibernate 或 Java EE 6 标准 JPA。听起来您正在着手重新发明一些既非常复杂又非常耗时的东西——这绝不是一个好主意。

更新:回应评论

好吧,我只能说你们正在把自己建设成一个受伤的世界。考虑:

  1. 如果您依赖完全动态的类,您会从其他类中引用这些类和对象吗?通过反思?您将如何跟踪所有创建的类、它们的名称以及它们的 setter 和 getter 的名称?
  2. 当您必须重新启动系统时会发生什么?您将如何重新创建所有这些动态类?
  3. 对于一个完全动态的数据库,您将如何对其进行任何性能优化?比如索引。

我只能强烈建议您重新考虑您的架构。动态数据模型一开始就是一团糟,几乎不可能维护、优化和调试。我见过基于它的系统,但它并不漂亮。 IBM Lotus WCM 是数据模型恐怖的一个典型例子。在 99,99999999% 的情况下,正确设计和规范化的关系模型会更好。

将其与动态的运行时 ORM 类结合起来将完全不可能维护(和理解)。

【讨论】:

  • 是的,但是要使用 hibernate 和其他 ORM 工具,必须提前定义表。但在我的情况下,表格将由用户操作动态生成,因此相应的类也必须动态生成。
  • @Pap 是绝对正确的。我有一个很大的答案,我不会发送,因为它不是答案,但基本上你想要使用的是哈希图。如果您从用户输入创建对象,则生成类而不是使用哈希(类型安全)的唯一可能优势将无效,因为无论如何您都必须反射访问这些字段!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2016-10-24
  • 2016-08-28
  • 2018-12-08
相关资源
最近更新 更多