복붙노트

[SPRING] 일반 또는 특정 DAO가 여러 테이블의 정보로 배달을 기록합니까?

SPRING

일반 또는 특정 DAO가 여러 테이블의 정보로 배달을 기록합니까?

사용자가 봄과 최대 절전 모드를 사용하는 GUI를 통해 DB에서 정보를 저장하고 검색 할 수있게 해주는 웹 응용 프로그램을 만들고 있습니다.

나는 DAO와 서비스 계층을 만들 때 막혔다. 새로운 전달을 추가 할 수있는 메소드를 만들고 싶습니다. 내 배송 테이블에는 제품 ID, 제품 유형 및 고객 이름, 고객 국가가 각각 포함 된 자체 테이블에 매핑 된 제품 ID 및 고객 ID가 있습니다.

문제가있는 부분은 최종 사용자가 제품 유형, 제품 이름, 고객 이름, 고객 국가 및 날짜를 ​​입력하여 납품을 기록하기를 원합니다. 나,

(1) 이러한 개체를 포함하는 새 배달을 추가하는 방법으로 DAO를 만듭니다.

또는

(2) 일반 객체를 DB에 저장 한 다음 각 개별 객체에 대해 DAO를 구현하는 서비스 메소드를 사용하는 DAO를 작성 하시겠습니까?

도와 줘서 고마워!

/디

해결법

  1. ==============================

    1.다음은 각 서비스 계층 클래스에 주입하는 일반적인 제 DAO 스 니펫입니다.

    다음은 각 서비스 계층 클래스에 주입하는 일반적인 제 DAO 스 니펫입니다.

    @Component("Dao")
    public class Dao implements IDao  {
        @Resource(name = "sessionFactory")
        private SessionFactory sessionFactory;
    
        @Override
        public <T> T save(final T o){
            return (T) sessionFactory.getCurrentSession().save(o);
        }
    
        @Override
        public void delete(final Object object) {
            sessionFactory.getCurrentSession().delete(object);
        }
    
        @Override
        public <T> T get(final Class<T> type, final Long id) {
            return (T) sessionFactory.getCurrentSession().get(type, id);
        }
    
        @Override
        public <T> List<T> getFieldsEq(final Class<T> type, final Map<String, Object> restrictions) {
            final Session session = sessionFactory.getCurrentSession();
            final Criteria crit = session.createCriteria(type);
            for (Map.Entry<String, Object> entry : restrictions.entrySet()) {
                crit.add(Restrictions.eq(entry.getKey(), entry.getValue()));
            }
    
            return crit.list();
        }
    }
    

    다음과 같이 서비스 계층에서 사용할 수있는 암탉은 무엇입니까?

    @Transactional(readOnly = true)
    public List<City> getCities() {
      return dao.getAll(City.class);
    }
    

    물론 특정 복잡한 쿼리에 대해 DAO를 확장 할 수도 있습니다. 하나의 일반적인 DAO가 단일 책임 원칙 인 DRY를 준수하고 테스트하기가 더 쉽습니다. 트랜잭션은 서비스 계층에 있어야하며 작업 단위와 직접 관련되어야합니다.

  2. from https://stackoverflow.com/questions/10173331/general-or-specific-dao-to-record-delivery-with-information-from-multiple-tables by cc-by-sa and MIT license