java dao orm service

Java中如何使用DAO?和service,ORM,repository,MVC的model是啥关系?

 
 
 

1.Dao和Service是如何划分的?

一个Dao方法可以包含多个sql操作吗?
譬如User/Permission/Group 以及他们两两关联表.

我删除User 顺便把Permission也删掉(前提是通过代码删而不是cascade). 这是写到一个DAO方法里还是在Service里组装?

1.1 针对非数据库数据如何处理?
如果是redis 也许有现成的类似mybatis的封装.
但是如果是数据源本身就是一个http api. 那获取这个数据的动作(python中使用requests.get("<url>"))应该写在service里还是DAO里.还是都可以?

2. MVC中的Model和三层中的DAO有什么区别?

我目前的结论是在java中实际上Model 其实是pojo. 只是用于存数据的.

而django/peewee等实际上是active record. 功能更强大. 我这么理解对吗? 进而引出下一个问题和结论:

2.1 DAO和ORM之间的关系是什么?

我的结论: DAO是人为的抽象. 目的是将ORM/SQL 和 service隔离. 也就是说如果有一天我要换orm或数据库或他们的版本, 那么service是一行代码都不需要改的.

而ORM 无论是actice record还是data mapper 不重要. 重要的是ORM简化了SQL或者说部分隐藏了SQL 在没有其他用处了.

在django项目中DAO不常见其实可以认为这个项目没有考虑将来django的版本升级风险.

 

3. Repository和Dao的区别? Manager和Dao的区别?

我的结论:

DAO是个通用概念 别的语言也可以有.

repository是 和JPA 一起出现的概念也就是说repository 是 java 范畴的概念.

也就是说在java里repository 约等于 DAO. 只不过repository因为有JPA协议加持所以有他自己的约束行为. 而DAO 因为是人为的抽象所以爱咋写咋写.

譬如可以在DAO的方法中调用orm. 也可以在DAO的方法中手写SQL.

Manager是我在搜索Repository和Dao的区别这个问题的时候看到的概念. 目前还没有在java代码中看到过.

我目前的理解是 controller -- service -- manager -- DAO

但是我也不知道这个manager是干啥的.

4. 我是Python --> Go

Java正在学习中,所以很多概念不是很理解. 我觉得JAVAEE 提出了很多概念 但是这些概念其实是没啥大意义的.譬如POJO,DO,DTO,BO,AO,VO..

【转】https://www.zhihu.com/question/589707954/answer/2937836966

posted on   lydstory  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-03-06 人的第二思维
2020-03-06 QGraphicsView图像缩放
2020-03-06 字体转换工具
2020-03-06 一个人:最好的方式
2020-03-06 读取操作系统盘符

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示