[英]jpa inheritance and code reuse in service classes
我有一個父實體,Person和兩個子實體:Caller和Employee。 這兩個孩子共享許多字段,因此我使用單表策略和區分符列實現了JPA繼承。到目前為止,一切都很好。 為了處理這些對象,我有一些服務類來處理數據庫操作,其中我有如下方法:getCallerById(); 或getEmployeesByFirstName()。 同樣,save()方法也位於這些服務類中。 問題是,當我想保存一名雇員或呼叫者時,我得到了很多重復的代碼(用於所有共享屬性),因此為了防止這種情況,我創建了第三項服務:PersonService()以處理常見問題功能。 但是現在我不知道如何使用此服務來重用盡可能多的代碼。 也許在PersonService()中有類似
public Boolean save(Person p){
if (p instanceOf Caller){
Caller c = new Caller();
c.setCallerSpecificProperty("XXX");
}
if (p instanceOf Employee){
Employee c = new Employee()
c.setEmployeeSpecificProperty("YYY");
}
c.setOtherCommonParameter("ccc");
//............
}
或您如何建議我處理此問題??? 謝謝
如果您的問題只是設置Person的100個commonProperties,則可以添加helper方法,例如
protected Person setCommonProperties(Person p){
p.setFoo(foo);
p.setBar(bar);
...
p.setWhatever(blahblah);
return p;
}
在您的parentService中(在您的情況下為PersonService)
在子類中(例如CallerService),
boolean save(){
Caller caller = new Caller();
caller = setCommonProperties(caller);
caller.setCallerPropertyA(...);
caller.setCallerPropertyB(...);
...
//save caller
return true or false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.