ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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에서 디폴트 
        • 즉시 정보를 가져옴 

    영속성 컨텍스트와 지연로딩

    지연 로딩도 영속성 컨텍스트의 기능 중 하나 - 지연 로딩이 된 엔티티의 정보를 조회하려고 할 때는 영속성 컨텍스트가 존재해야 함 = 스프링 컨테이너 환경에서는 트랜잭션이 적용되어 있어야 함 -> 지연 로딩된 엔티티를 조회하려고 할 때 영속성 컨텍스트(트랜잭션)이 걸려 있어야 함  

     

    영속성 전이: 영속 상태의 엔티티에서 수행되는 작업들이 연관된 엔티티까지 전이되는 상태 

    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
Designed by Tistory.