{eval=Array;=+count(Array);}
如果让我来说,我推荐你使用sqltoy-orm,增删改和对象加载简单查询jpa模式,查询则比mybatis强无数倍,更加直观简洁,另外具有缓存翻译大幅提升查询性能,还有很多人不敢想象的分页优化级别(很多仅仅优化了count处理就以为很强了,见了sqltoy的分页优化才属于见到了不可想象的事情)!
github上搜索sagacity-sqltoy!
https://github.com/sagframe/sagacity-sqltoy
gitee地址:
https://gitee.com/sagacity/sagacity-sqltoy
我自己开发的情况下用JPA的比例比mybaits更多,首先我比较讨厌mybaits那种标签和SQL混用的风格,其次是JPA的也是可以使用原生SQL嵌入实习复杂查询的,最后是JPA稳定性比较好
看你团队喜好吧,Mybatis 容易上手,也更加灵活。
JPA 也不错,毕竟属于 Spring 全家桶一部分,像使用对象一样写 SQL 这种体验也蛮好的。
都可以执行原生 SQL。
怎么喜欢怎么来。
不必纠结。
都可以吧,mybatis我更多用来写报表统计,或者复杂的关联查询。如果架构是微服务,并且通过业务解耦来避免了频繁的事务,用spring data是非常好的选择[呲牙]最后,为什么非要二选一呢?看看mybatis plus吧,成功的糅合了mybatis的灵活与jpa的快捷,还有代码生成器,非常建议题主去试试!
技术选型需要结合多方面来考虑,这里我试着列举一些方面,仅供参考。
是否需要兼容多种数据库。如果需要兼容,优先考虑spring data jpa。因为mybatis想要兼容数据库需要写多套sql脚本,工作量很大。
开发团队的经验。开发团队成员过往开发中,对哪个orm框架更熟悉。一般来说,mybatis上手比较容易,jpa/hibernate虽然不用写sql语句,但是配置复杂,各个状态转换难以理解,出现错误也难以调试,对开发人员能力要求较高。
性能考虑。作为orm框架,jpa/hibernate需要把数据库行完全映射成java对象,占用内存较大,特别是进行关键查询的情况下。当然,这可以通过懒加载、查询指定字段等方式优化,但是和上面一样,对人员要求较高。另外hibernate生成的sql语句可读性也较差,不利于检查问题。
其他杂项考虑。jpa对逻辑删除支持较差; mybatis编写ResultMap过于繁琐等等。
总结一下,spring data jpa开发效率高,代码量少,但是代价是学习成本和优化成本比较高。mybatis代码量大一些,不好兼容多种数据库,但是手动编写sql相对灵活,上手简单。
0
回答0
回答0
回答1
回答0
回答5
回答10
回答0
回答0
回答8
回答