私はRESTとJPA技術に取り組んでおり、一般的にサービスとDao層を設計したいと考えています。 各レイヤのデカップルルールに従いたいと思います。将来的には、必要に応じてこれらのレイヤーを変更することなくいつでも変更することができます。ですから、DAOレイヤーでも同じことをするには、Factoryパターンに従っています。DAO、RESTサービス層を設計するには
今まで私が何をしたか見てください。
public abstract class AbstractDao {
@PersistenceUnit(name = "Services")
private EntityManagerFactory factory;
public AbstractDao() {
this.factory = Persistence.createEntityManagerFactory("Services");
}
public void save(AbstractEntity entity) {
EntityManager em = getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(entity);
tx.commit();
}
public void delete(AbstractEntity entity) {
getEntityManager().remove(entity);
}
public List<AbstractEntity> findAll() {
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<AbstractEntity> cq = cb.createQuery(AbstractEntity.class);
Root<AbstractEntity> from = cq.from(AbstractEntity.class);
cq.select(from);
TypedQuery<AbstractEntity> q = getEntityManager().createQuery(cq);
List<AbstractEntity> allitems = q.getResultList();
return allitems;
}
private EntityManager getEntityManager() {
EntityManager em = factory.createEntityManager();
return em;
}
}
だから、この私はDAO層に用いられるものをデザイン。しかし、それが正しいアプローチであるか、それともAbstractFactoryのようなものであるかはよく分かりません。
私はCRUDのためにこのDAOレイヤーにアクセスしています。
だから、この私はサービス層上のDAO層にアクセスしていますがどのような方法。しかし、やはり私はこのDAOレイヤーにアクセスするためのより良い方法を考えています。 もう1つ質問したいのは、ビジネスレイヤーを導入してこのようにするとよいでしょうか。
クライアント - >サービス層 - >ビジネス・レイヤー - > DAOレイヤー
は、誰かがプロジェクトの異なる層を設計するために私を助けてもらえます。
ありがとうございます。例えば、このリンクを参照してください、
使用Springフレームワークと春のRESTfulなサービスのアノテーションを使用します:
、画像を投稿しないでください。実際のコードを貼り付けます。 – pzaenger