스터디/Spring Boot
[Spring Boot] 스프링 스터디 3일차
dekoms
2023. 11. 14. 12:42
DB의 값을 자바에서 객체로 처리하기 위해 Domain을 사용함.
데이터베이스로부터 값을 읽어와서 자바에서 Domain의 하나의 클래스로 정의내린 후 값이 변화하면 안 됨.
주요 3계층: Controller, Service, DAO
주요 3계층간에 움직일 때, 보안성이 있고 일부의 데이터만 가지는 DTO를 사용함.
패러다임과 속성이 약간 다른 것들
Controller, Service, DAO: 자바에서 값을 다룸...?
DTO, Domain: 데이터베이스의 값을 다룸...?
데이터베이스: 테이블 사용
Spring: Domain 사용
💯💯💯
과제 해결 중 이해한 것
사용자 | -> | Controller | -> | 데이터베이스 | ||
dto로 입력 | ↓↑ @Entity를 활용하여 domain으로 변환 | Dto | 스프링에서 정의된 계층간의 이동에 사용되는 데이터베이스의 일부값 | |||
Service | ||||||
dto로 출력 | ↓↑ @Transactional을 활용하여 스프링과 데이터베이스간의 원자성 지킴 | Domain | 데이터베이스의 값을 스프링에서 활용할 수 있도록 객체의 형식으로 데이터를 가짐. | |||
<- | Dao | <- |
계층간의 값 전달은 Dto를 활용해 이루어진다. Ex) UserReq, UserRes
id, created_at, updated_at의 값은 데이터베이스가 값을 자동으로 채워준다.
=> 데이터베이스의 주키에서 auto_increment, dto에서 @CreatedDate, @LastModifiedDate 설정을 해주었기 때문.
※ 소소한 팁
Dao의 관례 표현식: UserRepositoy
static을 활용하는 정적 메소드: 문서화 /** */를 편하게 할 수 있음, 생성자에는 사용하지 못함.