Spring data JPA 开启二级缓存,分布式部署一般用什么方案?

317 天前
 seraphv3

本小白程序员是写 java 的,但是工作了多年,用到真正的面向对象技术的机会比较少,所以去年自己做了一个面向对象的简单 demo 项目。

https://zhuanlan.zhihu.com/p/605481077

用的 Spring data JPA ,比较能够符合面向对象的风格。所谓 JPA ,java persistence architecture ,这个 persistence 就很有面向对象的味道,对象活在内存中,但是也需要在合适的时候持久化到数据库。

不过 Spring data JPA 的二级缓存才是活在内存中的对象,如果要分布式集群部署服务,一般怎么实现二级缓存的对象共享呢?

4804 次点击
所在节点    Java
45 条回复
dongzhuo777
316 天前
@seraphv3 不要用 @OneToMany 这些 这些都没用,后面性能和缓存会出大问题,这些都是以前 Hibernate 搞出来的。
那玩意是为了让程序员不用了解 sql 和数据库直接写代码,单这种只针对那种很小的项目没多少业务复杂度和并发量。
但实际情况是
以目前 java 、Spring 的体量,能选型用到 java+Spring 的项目肯定是很重业务且规模较大的项目
如果你用了这些什么 jpa 二级缓存 @OneToMany 。这些学了要么用不上,要么不能用
java 老老实实研究多线程、网络、jvm 、还有相关的中间件生态更有用,数据库就让它老老实实的 CRUD 做好最后的持久化工作就行了。
dongzhuo777
316 天前
面写对象是一个编程的方式或者方法论,对标的是面写过程,要学面写对象 这个 去学设计模式。
我理解上是,对于哪怕是面向过程的 C ,也有一个结构体,那玩意就是个简单的类。
C 也是可以按照面向对象的方法来写代码,但是得不偿失
szq8014
315 天前
我比较理解楼主的想法,尤其是楼主 PO 的链接内容,我看上面评论的大约也没几个人打开那个链接。对编程的理解,每个人经历不一样,想法更不一样。比如早些年的 asp(没有 .net) 以及 php ,都是把编程语言几乎当成是数据库的脚本来用的,功能无非就是把用户的请求转成一个个的 sql 查询捅到数据库里面,再把查出来的数据沉浸一下就 OK ,好多项目就是这样过来的,又不是不能用,我甚至觉得一定程度上这样也是个非常平衡、稳定的方法。只不过这跟面向对象就没啥关系了,不如叫面向数据库编程。
面向对象这块本人不才也只知一二,所以看到楼主的想法的时候其实是有共鸣的。按照面向对象的理念来说,希望有一个层或框架或工具能够把数据持久化这块给管理起来,而可以让开发人员把更多的精力放在代码和类的组织上。目前 Spring Data 框架也在往这块努力,比如一个 Entity 你调一下注释就可以把数据从 RDBMS 里面挪到 Redis 里面。
写这么多只是想给楼主打打气,我有和你一样的困惑,加油
szq8014
315 天前
s/沉浸/渲染/g
seraphv3
315 天前
@szq8014 老哥太实在了,握手

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1006228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX