当前位置:首页 > 技术分析 > 正文内容

在Java中使用哪个ORM框架比较好?- Reddit

ruisui883个月前 (01-21)技术分析12


1、 JPA API, Hibernate的实现,最受欢迎和足够好。


2、JdbcTemplate - 虽然不是真正的 ORM,但您必须自己编写所有查询 + 自己进行映射。我认为最好的选择,因为如果你了解 SQL,你可以 100% 控制它,不像 Hibernate,我看到开发人员犯了可怕的错误和反模式。


3、Spring Boot、JPA 存储库、Hibernate,但只需放入 id。像避免瘟疫一样避免关联和集合。
作为参考,我在 2004 年写了一本关于 Hibernate 的书,并一直在使用它。在调试性能问题和奇怪的异常一百万次之后,发现保持简单(有些人称之为贫血模型)在实践中效果最好。使用 Spring 缓存和/或 Redis 进行缓存/性能。
有趣的是,Hibernate 的创建者最近一直在推特上谈论 Hibernate 无状态会话的乐趣。我真希望我可以把所有的压力和时间都浪费在对抗糟糕的一级和二级缓存抽象上。


4、我经常使用Hibernate,并学会了远离某些东西。二级缓存是一种反模式的做法。如果你需要扩展,可以使用TiDB、Cockroach或Percona,在那里你可以按键分片数据表。
如果你遵循一些规则,我不觉得关系很麻烦。最大的问题是没有多对多的关系和没有急加载。
除非你要求,否则Hibernate Reactive永远不会加载关系。我希望有一个配置选项可以让普通的Hibernate这样做。
我们也有一个SPI集成,我们把它复制粘贴到所有的项目中,如果你试图加载一个有大量项目的集合关系时,它会吐出警告。这使我们避免了大多数的集合加载问题(除了many-many,这在我看来是个错误)。
使用一个在所有实体之间共享的简单的Equals和Hashcode实现也非常重要,它只检查ID。
我认为Hibernate最大的问题是缺乏 "最佳实践 "指南,没有告诉你哪些东西是不好用的。


5、Spring Data JDBC在JDBC的基础上做得很好,可以与数据表记录一起工作,并提供了一个转换器API来处理晦涩的数据类型。每当它不够用时,我就会退回到使用JdbcTemplate来运行查询。
JOOQ 非常有趣,但我喜欢靠近 SQL。对于我迄今为止处理的用例,本机查询总是比基于 ORM 的解决方案更快。不过,这并不是对使用 ORM 的批评。它们在某些情况下占有一席之地。


此外,JOOQ 要求我学习另一种 DSL,而我对 SQL 非常熟悉。使用 Spring Data JDBC 不需要我学习新东西。

在Java中使用哪个ORM框架? - Reddit

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/423.html

标签: c# orm框架
分享给朋友:

“在Java中使用哪个ORM框架比较好?- Reddit” 的相关文章

10款超牛Vim插件,爱不释手了

我是一个忠实的Vim编辑器用户,从事开发工作多年,我一直都非常喜欢使用Vim。轻量、便捷,而且,熟悉了Vim相关的快捷键之后,效率能够成倍的提升。除了这些之外,Vim像很多知名的IDE、编辑器一样,也支持插件配置,通过这些插件,可以实现更多高级、高效的操作。今天,就来给大家分享10个我特别喜欢的Vi...

neovim 0.9在win下配置 python开发环境

初级的一些配置点击下面链接查看neovim安装插件管理器neovim常用快捷键neovim python开发环境简易配置方法 (需要手动键入命令行 运行python)安装neovim python的模块pip install pynvim pip install jedi pip install n...

12种JavaScript中最常用的数组操作整理汇总

数组是最常见的数据结构之一,我们需要绝对自信地使用它。在这里,我将列出 JavaScript 中最重要的几个数组常用操作片段,包括数组长度、替换元素、去重以及许多其他内容。1、数组长度大多数人都知道可以像这样得到数组的长度:const arr = [1, 2, 3]; console.log(a...

史上最全 vue-router 讲解 !!!

前端路由 前端路由是后来发展到SPA(单页应用)时才出现的概念。 SPA 就是一个WEB项目只有一个 HTML 页面,一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转。 前端路由在SPA项目中是必不可少的,页面的跳转、刷新都与路由有关,通过不同的url显示相应的页面。 优点:前...

三勾商城(java+vue3)微信小程序商城+SAAS+前后端源码

项目介绍本系统功能包括: 前台展示+后台管理+SAAS管理端,包括最基本的用户登录注册,下单, 购物车,购买,结算,订单查询,收货地址,后台商品管 理,订单管理,用户管理等等功能,小伙伴一起来看看吧。三勾小程序商城基于springboot+element-ui+uniapp打造的面向开发的小程序商城...

在vue项目中封装WebSockets请求

在Vue项目中封装WebSocket请求包括以下步骤:1. 安装WebSocket库:首先,导入WebSocket库,例如`vue-native-websocket`或`socket.io-client`。根据项目需求选择适当的库,并根据官方文档进行安装和配置。2. 创建WebSocket服务:在V...