您好,我们正在启动一个项目,在该项目中我们必须在持久层使用 Spring JDBCTemplates、iBatis/myBatis 还是 Hibernate 之间做出决定。我或多或少熟悉他们两个的概念,但我想知道人们目前倾向于使用什么。
我的要求是:
- 让一切尽可能简单
- 易于学习和使用
- 高性能
- 最佳的开发人员生产力
- 必须可与 Spring 3 一起使用
如前所述,我们希望一切都尽可能简单。我的偏好倾向于 iBatis/myBatis,因为它看起来更容易使用,而且我们不需要真正的 OR Mapper。但我真的很期待向使用这些框架的人学习。
请您参考如下方法:
我建议你看看minuteproject spring/hibernate/ibatis 以及 JPA(2) 的逆向工程解决方案,因为它满足您的开发需求。它还没有生成一件事,那就是 jdbctemplate。
在选择技术之前,我会审查您所有适合分钟项目方法的观点。
- 让一切尽可能简单:让分钟项目为您生成在 iBatis (sqlMaps)、Hibernate (hbm 文件)、JPA (orm 文件或带注释的实体) 中持久保存所需的代码。但所有额外的框架集成:spring 配置、全面的 DAO 堆栈(不限于基本的 CRUD 操作)。它可以对应 20% 到 40% 的应用程序工件和时间。
- 轻松学习和使用:您的模型成为您的技术教程!从生成的内容中学习。您当然可以根据您的特定需要扩展它。
- 高性能:在 Spring/hibernate 或 Spring/JPA 的分钟项目轨道中:分钟项目提供与 orm 产品集成的 ehcache 配置生成。 它提供了高级 dao 层以及您只需引用的调整查询。
- 最佳开发人员生产力:它可以帮助您专注于真正的业务,而不是所有繁琐的 orm/dao 任务。它使技术学习曲线变得平坦。
- 必须可与 Spring 3 一起使用:Spring 工件与 2.5+ 兼容
但是最能做出判断的是你自己,所以在你的模型上试试吧。要快速概览启动/bin/start-console.(cmd/sh) 的可能性,请指向您的数据库并选择生成轨道。如果您的数据库是(mysql、db2、oracle、hsqldb 有默认值,例如 hibernatedialect 预设),通常需要几分钟。 要更高级地使用配置(它适用于所有数据库)。
关于使用哪种技术,我个人对所有这些技术都有生产经验,但我认为像 hibernate 这样的 orm 框架的双向方面比单向 sqlmap 更有优势。它可以节省配置,图形导航也很直观。
一个好东西:转义特殊字符,例如 ', 包含在 orm 框架中。这是在 sqlmap 中执行 native sql 时经常遇到的问题,例如插入姓氏 = 'o'hara'...
我会选择 Hibernate(在你提到的选择中),但是选择 JPA2 (如果您将其包括在内)。如果您想要真正额外的生产力,请集成 querydsl其中包含可编译标准 API。