自己封裝沒什么問題,只是是否有足夠的資源與時(shí)間去做這件事。現(xiàn)有的持久化框架主要功能點(diǎn)在于多SQL方言支持、多數(shù)據(jù)源配置、數(shù)據(jù)表映射(及實(shí)體字段變動(dòng)與數(shù)據(jù)庫表字段變動(dòng)的聯(lián)動(dòng)處理)、緩存與自動(dòng)化工具支持上。如果業(yè)務(wù)只需要支持特定的SQL方言、少量甚至只有一個(gè)數(shù)據(jù)源、數(shù)據(jù)表映射的聯(lián)動(dòng)要求不高、不是非常需要緩存加持,那么自己封裝并不是什么壞的選擇。至于自動(dòng)化工具支持,IDE一般會(huì)自帶一些,然后就是SQL拼接工具之類的東西了,只要你熟悉設(shè)計(jì)模式與目標(biāo)SQL方言的語法,那么自己動(dòng)手做也挺好的。特別的,關(guān)于數(shù)據(jù)表映射聯(lián)動(dòng),舉個(gè)栗子:@EntitypublicclassStudentextendsBaseEntity{privateStringname;}其中BaseEntity提供了基礎(chǔ)表字段,如id、createtime、updatetime之類的東西,現(xiàn)在業(yè)務(wù)需求在Student中增加/減少一個(gè)字段,要求你的框架能自動(dòng)識(shí)別并在對(duì)應(yīng)數(shù)據(jù)表增加/減少對(duì)應(yīng)字段,其中減少字段一般是直接取消對(duì)數(shù)據(jù)庫表的響應(yīng)字段映射即可。然后一對(duì)多多對(duì)一之類的關(guān)聯(lián)關(guān)系如何建立,聯(lián)表查詢的API形式等等,都是需要考量的。再舉個(gè)栗子,在hibernate中,允許通過@Where之類的注解來在對(duì)應(yīng)字段getter觸發(fā)時(shí)才拉取數(shù)據(jù)并應(yīng)用注解值進(jìn)行篩選,這種功能點(diǎn)是否需要以及如何去做。公司普遍還是在現(xiàn)有ORM基礎(chǔ)上二次封裝出如mybatis-plus一類的東西,當(dāng)然技術(shù)實(shí)力以及資源充足的組或公司會(huì)選擇自行實(shí)現(xiàn)ORM中的部分東西。