【发布时间】:2011-02-04 11:29:00
【问题描述】:
我已经接管了一些一直在使用 CodeFutures 的 Firestorm DAO 代码生成器的代码。我相信这个许可证很快就会到期,我想知道是否有人可以推荐任何替代方案,无论是否开源,这样我就可以了解有什么可以更好地做出决定。
【问题讨论】:
标签: java code-generation data-access-layer
我已经接管了一些一直在使用 CodeFutures 的 Firestorm DAO 代码生成器的代码。我相信这个许可证很快就会到期,我想知道是否有人可以推荐任何替代方案,无论是否开源,这样我就可以了解有什么可以更好地做出决定。
【问题讨论】:
标签: java code-generation data-access-layer
这对于您在 4 月份的具体决定可能有点晚,但如果您习惯于 Firestorm DAO,为每个数据库实体使用生成的代码,您可能会发现切换到 jOOQ 很容易。 jOOQ 完全省略了“DAO 层”,生成直接代表关系模型的类。这通常称为Active Record pattern。无需编写 DAO,您可以使用 jOOQ's built-in DSL 直接从 Java 查询数据库,类似于 Microsoft 的 Linq
我同意JavadocMD 的观点,即 JPA(或 Hibernate)是目前被认为是“最佳实践”的方法。但也许您不想为 well-known reasons 添加对象关系映射到您的应用程序...
【讨论】:
我强烈建议不要关闭firestorm。对于大约 90% 的用例,Firestorm 使编写 DAO 成为过去。对于所有其他情况,只需将 firestorm 制作的 dao 子类化并使用继承的辅助方法向其添加您想要的功能。您不需要许可证,您可以使用免费许可证。 不,我不是来自 Firestorm,但 Firestorm 帮助我完成了我的项目,节省了大约 40% 的时间。一旦我进入更复杂的查询,它将开始为我节省大约 20% 的开发时间,但是嘿,它仍然比其他解决方案节省 20%。此外,它还转换为原始 JDBC。当出现问题时,如果您熟悉 ODBC/JDBC,调试起来会容易得多。
【讨论】:
一种选择是完全改变方向并使用像 JPA 这样的持久性框架。您创建自己的 Java 对象模型,添加适当的注解,然后 JPA 会为您处理所有其他事情,而不会生成任何杂乱的代码。
当然,根据您的架构和业务情况的具体情况,这种更改可能不适合您。但是,如果您可以管理它,JPA 似乎更符合当前 Java 持久性的最佳实践。
我在生产环境中使用过 OpenJPA:http://openjpa.apache.org/
我们考虑了 TopLink(Oracle 的实现),但遇到了一些我不记得的问题。 http://www.oracle.com/technology/products/ias/toplink/index.html
【讨论】: