第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

DDD領(lǐng)域模型和充血對象在實際項目中的問題

標(biāo)簽:
Java

DDD领域模型

DDD领域模型是一个基于业务角度创建的一种逻辑模型、是业务即设计的思想。

充血对象

充血对象是把一部分业务放到实体上,也就是业务判断放到实体中完成,好处是业务判断集中。业务出现更改,只需要更改实体即可。

技术

由于充血对象在实际编码过程中,依赖于实体托管功能,所以在技术上,ORM基本使用Hibernate,Jpa这两种多,依赖于托管对象和事务,让整个模型和充血对象能够实现。

主要依赖于:实体托管,实体关联功能。

实现

在实体中设置OneToMany 等关联关系,就可以省略聚合根内部实体的ORM操作,在Jpa中也就是JpaRepository。角色实体设计如下:

依赖于这种设计,在事务中,直接操作role对象的roleDetails,在事务结束后,Jpa会自动提交托管的role对象。

这样就实现了充血对象和领域模型的设计。

在简单的业务中,该方式十分方便,操作对象和取出对象时,只需要操作聚合根即可。

问题

上述说了,在简业务中,会十分方便,但是在一些数据校验场景中需要处理的时候,就会有问题。

简单的场景举例:

需要删除某个权限的时候,需要删除所有角色中的该权限。所以需要操作role_detail表,这个时候,由于没有JpaRepository ,无法直接操作表,又不能遍历role,只能写SQL通过EntityManage操作这张表。

这是一个很严重的问题,在项目中,这种场景会经常出现,所以需要频繁的写SQL,操作内部实体十分不方便。

可以发现,在所有的内部类校验中,都麻烦,由于SQL问题,更导致后期表结构变化,SQL可能运行异常。无疑增大了后期改动的风险。毕竟项目后期更改是必须的。所以在数据准确性要求十分严格的时候,不建议使用领域模型

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消