반응형
📕 오늘 학습 키워드
📔 인증·인가와 로그인 흐름
📑 Spring Security, Filter, Session, JWT
- 인증은 사용자가 누구인지 확인하고, 인가는 해당 기능에 접근 가능한지 확인하는 것. Session은 서버에 저장된 인증 정보를 확인하고, JWT는 전달받은 토콘의 서명과 만료 등을 검증함
📔 요청 데이터 검증
📑 Validation, @Valid, BindingResult, FieldError
- 요청 DTO 값이 정해진 조건을 만족하는지 검사. 검증 오류가 있으면 서비스 호출 전에 오류 처리 가능
📔 서버 간 통신
📑 RestTemplate, JSON 직렬화·역직렬화
- 내 서버도 다른 서버에 요청할 때는 클라이언트가 됨. JSON으로 객체를 보낼 때는 직렬화, 객체로 바꿀 때는 역직렬화
📔 엔티티 관리와 데이터 조회
📑 영속성 컨텍스트, LAZY, EAGER, Transactional
- 연관 데이터가 필요할 때 조회. OneToMany는 default가 List로 객체를 LAZY, ManyToOne은 default가 EAGER임. 지연 로딩은 연관 데이터가 필요할 때 조회하므로 아직 읽지 않은 데이터를 조회하려면 해당 컨텍스트가 사용 가능해야 함. readOnly는 연관 데이터를 미리 읽는 설정
📔 연관 엔티티의 저장·삭제
📑 영속성 전이, CascadeType, orphanRemoval
- cascade는 연관 엔티티에 저장·삭제 같은 작업을 전파. REMOVE는 부모 삭제를 자식에게 전파하고, orphanRemoval은 관계에서 빠진 자식도 삭제
📕 학습하며 겪었던 문제점 & 에러
📔 ManyToOne·OneToMany와 외래키 매핑
- 사용자(User) 한 명에게 주문(Order) 여러 개가 연결되는 관계에서, User는 List<Order>를 가지고 OneToMany, Order는 User 하나를 참조하고 ManyToOne으로 표현
- 예제에서 외래키는 orders 테이블의 user_id에 있음. Order.user에 @JoinColumn(name = "user_id")를 붙여 객체 참조와 DB 외래키를 연결
- User.orders의 mappedBy = "user"는 Order의 Java 필드명 user를 가르킴. DB 컬럼명 user_id를 넣는 것이 아님
- ERD 관계 개수 표시와 Java 객체의 참조 방향을 섞지 말것
📔 flush와 영속성 상태
- flush하면 DB에 반영하면서 관리도 끝나는 줄 알았으나 DB에 동기화한 뒤에도 영속 상태가 유지됨
- clear나 detach로 관리가 끝나면 준영속. flush와 트랜잭션 commit은 다름
📔 readOnly와 지연 로딩
- readOnly면 연관 데이터를 미리 읽는다고 생각
- 실제로는 조회용 트랜잭션의 최적화 설정, 조회 시점은 LAZY EAGER가 결정. 쓰기를 무조건 거정하는 장치도 아님
📕 내일 학습할 내용
📔 다음 학습
- Docker CI/CD, MSA 개념 복습
더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'일기' 카테고리의 다른 글
| [내일배움캠프 사전캠프] - MSA (0) | 2026.10.08 |
|---|---|
| [내일배움캠프 사전캠프] - 미니 배민 과제 (0) | 2026.10.07 |
| [내일배움캠프 사전캠프] - Spring 숙련 (0) | 2026.10.02 |
| [내일배움캠프 사전캠프] Spring Boot, Docker, AI literacy (0) | 2026.10.01 |
| 2026.08.14 (0) | 2026.08.14 |