-
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에 넣는다
>> pstmt와 conn은 둘 다 AutoCloseable 인터페이스를 구현했기 때문에 사용가능
>> ①Connecrion과 PreparedStarment는 인터페이스이지만 실제로 반환되는 객체들은
AutoCloseable를 구현한 객체라서 사용가능
>> pstmt.setTimestamp의 Timestamp는 날짜하고 시간 둘 다 들어간다(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
>> 테스트 실패
>> user와 user2의 birth 값의 시간 다르게 나왔다
>> MySQL의 Date 값은 날짜만 출력되지만, 자바의 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