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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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 读取操作系统盘符