我有一个使用EJB和JPA的应用程序。目前我有以下架构:
实体:ActionEntity
服务:ActionService
实体是JPA实体,服务是所有CRUD操作的实现位置。ActionService
实现了GenericService
接口(DAO操作)
public abstract class GenericServiceImpl<T, PK> implements GenericService<T, PK> {
@PersistenceContext
protected EntityManager em;
private Class<T> type;
public GenericServiceImpl(Class<T> t) {
this.type = t;
}
@Override
public T create(final T t) {
this.em.persist(t);
return t;
}
@Override
public void delete(final PK id) {
this.em.remove(this.em.getReference(type, id));
}
@Override
public T find(final PK id) {
return (T) this.em.find(type, id);
}
@Override
public T update(final T t) {
return this.em.merge(t);
}
}
因此,ActionService
是Action
实体的DAO。我想知道这是不是一个好的架构?
为Action
创建一个DAO是不是更好,例如ActionDao
,它只实现基本的DAO操作。然后,ActionService
可以实现自己的create
方法,该方法具有一些额外的业务逻辑,并最终调用ActionDao
?或者你会不会认为这有点过头了?
发布于 2015-10-21 08:49:44
嗯,将服务(业务逻辑)层与数据层分离是一种常见的做法。这种方法实际上有多个好处:
时,提取DAO层将使您的工作变得更容易。
因此,基本上这就是SRP的主要思想-职责分离。
https://stackoverflow.com/questions/33254394
复制相似问题