您已经开始使用良好的模式。下一步是为每种实体类型创建PersistService的子类。我还将提到,从长远来看,您可能希望为每个实体都有一个通用的基类或接口。例如,我将其称为
Entity。该基类(如果是类而不是接口)可以是抽象的,并且可以为所有实体定义通用方法。
public interface Entity { long getId();}
您可以使用
Entity在的实现中定义的方法
PersistService(当您在此基本服务或代码的其他位置添加更多与实体相关的通用业务逻辑时,可能会发现它们很方便)。
您的实体
A看起来像
public class A extends Entity {}
你
PersistService成为
public abstract class PersistService<T extends Entity> { // Your common methods (persist, remove, etc.). public abstract Class<T> getEntityClass();}
您的特定于实体的服务如下所示
public class APersistService extends PersistService<A> { public Class<A> getEntityClass() { return A.class; }}
然后
getEntityClass(),您可以在实现时使用该方法
PersistService.remove()。
尽管特定于实体的子类解决了面对类型擦除的特定类对象的问题,但您最终会发现您希望该子类也支持特定于实体的查询。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)