-
Spring 숙련 2주차(작성중)코딩공부/Spring 2023. 6. 26. 21:06
Rest Template
라이브러리만으로는 구현이 힘든 기능들이 있음 -> API 사용 -> 클라이언트 입장이 되어 API를 제공하는 쪽의 서버에 요청해야 함
서버에서 다른 서버로 간편하게 요청 - Rest template
responseEntity = restTemplate.getForEntity(URI, 변환하고 싶은 클래스의 타입) -> 자동으로 변환
@RequestParam: 쿼리스트링 방식
RestTemplate의 exchange
네이버 오픈 API
목록: https://developers.naver.com/products/intro/plan/
https://developers.naver.com/products/intro/plan/
developers.naver.com
데이터베이스의 JOIN 기능 - 방향이 없음(양방향) - 외래키로 연관관계 가짐
java entity에서의 JPA - 방향이 있음(양방향, 단방향) - 참조를 해야 조회가 가능
외래키의 주인이 외래키를 컨트롤 할 수 있음
N 대 1 관계
양방향 - 리스트 형태 - 테이블에 적용되지 않음 -> 엔티티에서만 존재 / 데이터를 참조, 표현하기 위함일 뿐
1대 N 관계
외래키의 주인은 음식 테이블이지만 데이터베이스 테이블의 food_id 칼럼은 유저 테이블이 가지고 있음
-> Food 테이블의 userList를 통해서 food_id를 통제해야 함 -> 한계 존재: 업데이트가 추가적으로 발생
리스트는 데이터베이스 테이블에 저장될 수 없기 때문
기본적으로 단방향 - 양방향으로 만들 수는 있지만 지원하지 않음
N대 M 관계
@ManyToMany
지연로딩
- Fetch Type: 정보를 가져오는 방법
- Lazy: 지연 로딩 / Many로 끝나는 애노테이션에서 디폴트
- 필요할 때 정보를 가져옴
- Eager: 즉시 로딩 / @ManyToOne에서 디폴트
- 즉시 정보를 가져옴
- Lazy: 지연 로딩 / Many로 끝나는 애노테이션에서 디폴트
영속성 컨텍스트와 지연로딩
지연 로딩도 영속성 컨텍스트의 기능 중 하나 - 지연 로딩이 된 엔티티의 정보를 조회하려고 할 때는 영속성 컨텍스트가 존재해야 함 = 스프링 컨테이너 환경에서는 트랜잭션이 적용되어 있어야 함 -> 지연 로딩된 엔티티를 조회하려고 할 때 영속성 컨텍스트(트랜잭션)이 걸려 있어야 함
영속성 전이: 영속 상태의 엔티티에서 수행되는 작업들이 연관된 엔티티까지 전이되는 상태
cascade = {CascadeType.타입명}로 설정
고아 Entity 삭제 - OrphanRemoval
연관관계를 제거하는 것만으로도 그에 해당하는 데이터를 지울 수 있는 기능
연관된 엔티티를 제거했을 때 delete 해주는 기능 뿐 아니라 cascadeType.REMOVE의 기능 또한 가지고 있음
@ManyToOne에서는 사용할 수 없음
'코딩공부 > Spring' 카테고리의 다른 글
Spring 심화 1주차 (0) 2023.07.11 Spring 숙련 1주차 (0) 2023.06.21 Spring 입문 2주차 (0) 2023.06.16 Spring 입문 1주차 (0) 2023.06.12 - Fetch Type: 정보를 가져오는 방법