我有一个父实体,Person和两个子实体:Caller和Employee。这两个孩子共享很多字段,所以我用单表策略和鉴别器列实现了JPA继承。所以这么好。 为了处理这些对象,我有一些Service类来处理数据库操作,其中我有以下方法: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");
//............
}
或者您如何建议我处理这个问题? 感谢
答案 0 :(得分:1)
如果你的问题只是设置100个commonProperties,你可以添加辅助方法,比如说
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;
}