JPA之如何設計乙個優雅的DAO

2021-07-04 01:56:12 字數 1206 閱讀 3185

要想使寫的**具有可復用、可維護、易擴充套件,我們就要面向介面程式設計。

添刪改查,每增加乙個模組都要做添刪改查,重複**之多可想而知,不便於維護,雖然我們使用了持久層框架jpa,但也避免不了重複的**。

如何才能使重複的**更少些呢?

採用泛型+反射技術。

首先我們定義乙個介面

public inte***ce dao

實現類:

public class basedaoimplements dao

@override

public void update(t entity)

@override

public void delete(serializable entityid)

@transactional(propagation=propagation.not_supported)

public t find(serializable entityid)

@transactional(propagation=propagation.not_supported)

public long getcount()

/*** 獲取實體名稱

* 在方法上使用泛型

* @param entityclass

* @return

*/protected static string getentityname(classentityclass)

return entityname;

}如何使用:

只需讓你開發的模組的介面繼承dao介面,實現類繼承basedao

例如:/**

* 使用者業務處理介面

* 一定要繼承dao介面,因為是通過介面操作的

* @author zjq**/

public inte***ce buyerservice extends dao{

/*** 業務處理類

* 交給spring管理

* 並且支援事務,(spring只會對定義在本類的方法應用事務通知,所以把事務放在父類裡面)

* @author zjq**/

@service("buyerservice")//spring只會對定義在本類的方法應用事務通知(advice)

public class buyerservicebean extends basedaoimplements buyerservice {



如何設計乙個優雅的RESTFUL的介面

設計介面是我們開發人員的日常操作。當我們把接 給前端人員時,是否有種拔劍出鞘的錯覺。畢竟交付介面,我們的開發工作就階段性完成了。不過,如果我們沒有乙個介面設計規範的時候,結果會怎樣呢?我們來張圖感受一下。2000年,乙個年輕小夥子 roy thomas fielding 在他的博士 提出了 rest...

如何優雅關閉乙個執行緒

當我們去thread類裡面找相關的介面時,發現有 個stop方法,看上去非常適合用來終止乙個執行緒,但是這個方法上面標了個 deprecated註解,非常明顯,這是乙個廢棄方法,不建議使用它。主要有兩個方面的原因 因為這個方法會將執行緒直接殺掉,沒有任何喘息機會,一旦執行緒被殺死,後面的 邏輯就再也...

如何優雅的生成乙個 diff patch

某天如果你要把一條 git 或 svn 記錄的修改傳送給其他人時我們要怎麼做呢?在 git 下你可以這麼做 git format patch commit sha1 id 1這樣會生成單條記錄的 patch 檔案,當然也可以生成多條或者兩條 commit 記錄之間的修改。例如我們在開源專案 nukl...