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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

到處使用 DTO 會(huì)影響 jvm 上的內(nèi)存使用嗎?

到處使用 DTO 會(huì)影響 jvm 上的內(nèi)存使用嗎?

喵喵時(shí)光機(jī) 2021-10-28 09:55:07
所以我的問題是在我的項(xiàng)目中,我在我的服務(wù)類中使用模型映射器。因此,當(dāng)服務(wù)調(diào)用 Dao 層(實(shí)際上只是一個(gè) JPA Repository 接口)時(shí),Dao 層現(xiàn)在成功返回實(shí)體而不是僅返回實(shí)際實(shí)體,我首先將其轉(zhuǎn)換為 DTO(這是實(shí)體的精確副本)使用java的模型映射器。因?yàn)槲也幌胫苯庸_我的實(shí)體。代碼示例:public class FormService {    @Autowired    private FormMasterDao formMasterDao;    @Autowired    private ModelMapper mapper;    public FormMasterDTO save(FormMasterDTO formMasterDTO) {        FormMaster formMaster = buildFormMaster(formMasterDTO);        return convertToFormMasterDTO(formMasterDao.save(formMaster));    }    public List<FormMasterDTO> findById(String id) {        return formMasterDao.findByIdIn(id)                .stream()                .map(this::convertToFormMasterDTO)                .collect(toList());    }    public void updateAll(List<FormMasterDTO> formMasterDTOList) {        formMasterDao.saveAll(formMasterDTOList.stream()                .map(this::convertToFormMaster)                .collect(toList()));    }    public FormMasterDTO update(FormMasterDTO formMasterDTO) {        return convertToFormMasterDTO(formMasterDao.save(convertToFormMaster(formMasterDTO)));    }    private FormMasterDTO convertToFormMasterDTO(FormMaster formMaster) {        return mapper.map(formMaster, FormMasterDTO.class);    }    private FormMaster convertToFormMaster(FormMasterDTO formMasterDTO) {        return mapper.map(formMasterDTO, FormMaster.class);    }}我發(fā)現(xiàn)這種方法很有用,因?yàn)槿绻S多開發(fā)人員工作和編寫代碼,他們就不能直接使用實(shí)體。但我想知道,使用這種方法是否不好?會(huì),它會(huì)影響 JVM,因?yàn)槊看斡腥它c(diǎn)擊服務(wù)時(shí),我都會(huì)將其轉(zhuǎn)換為 DTO。
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果您擔(dān)心從純 JPA 對(duì)象轉(zhuǎn)換為 DTO 的時(shí)間成本,那么請(qǐng)不要擔(dān)心。這是為什么。

與許多其他操作相比,對(duì)象分配確實(shí)很慢,但與 IO 相比一點(diǎn)也不慢。我確信您的 JPA 服務(wù)會(huì)從數(shù)據(jù)庫(kù)中獲取一些東西。如果我是對(duì)的,那么突然間您花在新對(duì)象分配上的時(shí)間(以及以后產(chǎn)生的 GC 成本)將少于您花在 DB 操作本身上的時(shí)間的 0.01%。

如果您針對(duì)速度進(jìn)行了優(yōu)化,減少內(nèi)存分配是一個(gè)好主意,但到目前為止,這應(yīng)該不是您要做的第一件事。只有在優(yōu)化成本更高的操作(例如數(shù)據(jù)庫(kù)查詢)之后才有意義。

免責(zé)聲明: 在某些情況下,您的 DTO 會(huì)被證明是昂貴的。如果您碰巧在 JPA 對(duì)象中使用延遲加載,那么您即將進(jìn)行的 DTO 轉(zhuǎn)換將完全擊敗它。延遲加載將允許 JPA不獲取JPA 對(duì)象圖的某些子元素,但作為 DTO 轉(zhuǎn)換的一部分,您每次都會(huì)請(qǐng)求“可選”數(shù)據(jù),這反過來會(huì)使您回到開始使用Lazy.


查看完整回答
反對(duì) 回復(fù) 2021-10-28
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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