ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 08 DAO의 작성과 적용(1)
    Spring/02 Spring DI와 AOP 2023. 7. 2. 21:37
    반응형

    DAO의 작성과 적용(1)

    1) DAO(Data Access Object)?

    - 데이터(data)에 접근(access)하기 위한 객체(object) dao

    - Database에 저장된 데이터를 읽기(R), 쓰기(C), 삭제(D), 변경(U)을 수행 CRUD

    - DB 테이블 하나의 DAO를 작성 1:1

     

     

     

    2) 계층(layer)의 분리

    >> 기능 LoginController : id, pwd체크 , RegisterController : 회원가입

    >> LoginController+selectUser(String):User를 넣고 직접 DB에 접근

    >> RegisterController도 회원정보를 보기위해 +selectUser(String):User가 필요하다

    >> +selectUser(String):User의 중복

     

     

     

    2-1) 계층(layer)의 분리 (중복 제거, 분리)

    >> 보통은 3단계로 나누어 진다

     

     

    userDao.java

    >> 이전에 DBConnectionTest2Test.java 했던 메서드를 userDao에 넣는다

    >> pstmtconn은 둘 다 AutoCloseable 인터페이스를 구현했기 때문에 사용가능

    >> ConnecrionPreparedStarment는 인터페이스이지만 실제로 반환되는 객체들은

           AutoCloseable를 구현한 객체라서 사용가능

    >> pstmt.setTimestampTimestamp는 날짜하고 시간 둘 다 들어간다(dateTime)

     

     

     

    3) userDao를 인터페이스로 변경

     

    UserDao (인터페이스)

    >> 인터페이스의 모든 메서드들은 public 이므로, UserDao의 메서드에 public이 생략되어 있다

    >> 이전의 UserDao.java UserDaoImpl.java로 변경되었다

    >> 만약에 우리가 다른 DB를 사용한다면? UserDao를 변경해야된다

          UserDao를 변경하기 보다는 위처럼 인터페이스를 사용하게 해놓고

          실제 구현체만 변경할 수 있도록 한다 Spring 이점

     

     

     

    3-1) userDaoImpl 테스트

    >> 만드는 과정은 생략

     

     

    UserDaoImplTest 생성

     

     

    >> @Component @Repository, @Service, @ConttollerAdvice @Componet를 가지고 있다

    >> @Repository도 메타 애너테이션으로 @Component를 가지고 있다

     

     

     

    3-2) update( )의 테스트 실행시 에러 문제

    >> @Autowired의 경로에 root-context.xml<context:component-scan>추가

    servlet-context (복사)

     

     

     

    UserDaoTest.java(결과 확인)

     

     

    4) update( )의 테스트

    UserDaoTest.java

    >> 테스트 실패

     

    >> useruser2birth 값의 시간 다르게 나왔다

    >> MySQLDate 값은 날짜만 출력되지만, 자바의 Date 값은 날짜+시간이 같이 출력된다

     

     

     

    UserDaoTest.java

    >> 캔린더에서 날짜만 사용할 때 조심해야 될게 Cal,clear( )를 사용해줘야 한다

    >> 모든 필드 초기화 setcal( ) 날짜만 입력

     

     

     

    5) deletAll( ) 수정(private public)

    UserDaoImpl.java(수정)

     

    UserDao (인터페이스)

     

    UserDaoImplTest.java(수정)

     

     

     

     

    반응형

    'Spring > 02 Spring DI와 AOP' 카테고리의 다른 글

    09 DAO의 작성과 적용(2-2)  (0) 2023.07.04
    09 DAO의 작성과 적용(2-1)  (0) 2023.07.03
    07 Spring으로 DB다루기 TDD  (0) 2023.07.01
    06 Spring으로 DB연결하기  (0) 2023.06.30
    05 Spring DI 활용하기(2) - 이론  (0) 2023.06.28
Designed by Tistory.