几年来,我首先在 C#、MVC、实体框架、数据库方面进行开发。现在我想尝试 Java 并选择 Play Framework 和 IDEA 作为 IDE。现在我搜索这样的 ORM 系统:
- 轻松集成到 Play Framework 中;
- 从数据库(逆向工程)生成类作为主要工具;
- 在 C# 中使用 LINQ 之类的简单语言(例如:from x in context.MY_TABLE select x)
几年来,我首先在 C#、MVC、实体框架、数据库方面进行开发。现在我想尝试 Java 并选择 Play Framework 和 IDEA 作为 IDE。现在我搜索这样的 ORM 系统:
我强烈建议使用jOOQ:
java -classpath jooq-3.1.0.jar;jooq-meta-3.1.0.jar;jooq-codegen-3.1.0.jar;postgresql-9.2-1003.jdbc4.jar;. org.jooq.util.GenerationTool /jooq_config.xml
SQL
深度编程的理想选择。我一直很喜欢SQL
,而且我真的有机会与许多ORM
拥有多种技术的人一起工作(.NET: NHibernate, Entity Framework, Linq. Java: Hibernate, JPA. Scala: Anorm SQL
),但对我来说没有好的解决方案。我用model first
和database first
。每次我在应用程序的最关键点使用原始 SQL 和存储过程。ORM 会产生大量难以分析和优化的垃圾。
当我发现 jOOQ 时,我非常怀疑。在使用它大约 6-8 个月后,我知道就是这样。该工具允许您编写类似于原始 SQL 的每个查询,并且它是非常高效的工具。接下来是这个工具正在快速增长。
我不知道 IDEA 是否支持 DB -> JPA 实体逆向工程,但 Eclipse Dali 做得很好——我在几个项目中使用了这种方法并且对它很满意。
http://www.eclipse.org/webtools/dali/
如果愿意,Play2 可以与完整的 JPA 配合使用。Ebean 仅使用 JPA 注释。我喜欢 EBean,因为即使我不完全相信 JPA 的标准 API(我已经在 JPA 2.0 上完成了它,所以不知道在 JPA 2.1 上它变得多么容易)和 EntityMananager 的有用性(所有的麻烦与连接/disconnedted entity)我是 JPA 注释的忠实粉丝。
对于任何对 JPA 感兴趣的人,我推荐这本书
http://www.amazon.com/Pro-JPA-2-Mike-Keith/dp/1430249269/
顺便说一句:JPA 的命名查询 / JPQL 对于像简单查询需求这样的 sql 来说可能没问题。Ebean 不支持 JPQL,因此如果想使用它,则需要完整的 JPA 实现,如 Hibernate 或 EclipseLink。
Jooq 不支持嵌套对象。这个想法很好,但不是很有用。