본문 바로가기
반응형

Spring91

연관관계 매핑 연관관계 - 객체와 테이블 연관관계의 차이를 이해한다. - 객체의 참조와 테이블의 외래 키를 매핑한다. 연관관계가 있다는 것은 테이블이 조회, 생성, 삭제 시 서로 연관되어 있다는 의미입니다. 예를 들어, 축구선수A가 B팀에 입단하면, 축구선수A 정보에 B팀을 추가해야하며, B팀 리스트에도 축구선수가 추가되어야 합니다. 만약 C팀으로 옮기면, 축구선수 A는 소속팀을 C팀으로 바꿔야 하고, B팀 리스트에서 선수A를 삭제합니다. 연관관계의 기본 개념은 다음과 같습니다. - 1:N 혹은 N:1 관계에서 외래키는 항상 N쪽에 있다.(외래키의 주인은 N이다.) - 1:1 관계에서 외래키의 위치는 설계에 따라 달라진다. - (N:M 관계는 다른 게시물에서 설명) JPA의 연관관계 매핑을 학습하기 이전에, 기본개념을.. 2021. 9. 10.
N:1 테이블 관계 설계하기 * 개요 연관관계를 정하기 위해서는 단방향인지 양방향인지, 연관관계의 주인이 어디인지를 먼저 고려해야 합니다. * JPA에서 연관관계란? 테이블에서는 외래키 하나로, 테이블을 조인하고, 참조가 가능합니다. 따라서 사실상 방향이라는 개념이 없습니다. 하지만, 객체에서는 참조용 필드가 있는 쪽으로만 참조가 가능합니다. 한쪽만 참조하면 단방향, 양쪽이 모두 참조하여 양방향입니다. 예를 들어 A->B, B->A 처럼 참조가 2군데이면 양방향 객체 참조입니다. 이처럼 2군데로 참조하기 때문에, 외래키를 관리할 곳이 필요합니다. 이 외래키를 관리할 곳을 연관관계의 주인이라고 하며, 외래키가 주인이 아닌 곳은, 외래키에 영향을 주지 못하고 단지 조회만 가능합니다. * N:1 양방향 N:1 관계는, 가장 많이 사용하는.. 2021. 9. 7.
1:N 테이블 관계 설계하기 * 개요 연관관계를 정하기 위해서는 단방향인지 양방향인지, 연관관계의 주인이 어디인지를 먼저 고려해야 합니다. * 1:N 단방향 Team : Member가 1: N 관계를 가지고 있으며, Team에서 외래키를 관리하는 연관관계의 주인인 경우입니다. 외래키를 관리하는 Team 객체를 기준으로 보면, Member가 N이므로 TEAM_ID 외래키를 가지고 있습니다. Team 객체가 연관관계 주인이므로, List members로 Member 객체를 참조합니다. 이는 객체와 테이블의 차이로 반대편 테이블의 외래키를 관리하는 특이한 경우입니다. 하지만, Member는 Team의 어떠한 정보도 참조하지 않습니다. 연관관계의 주인이 아니기 때문입니다. List members로만 서로의 객체 수정이 가능합니다. * 1:.. 2021. 9. 7.
1:1 테이블 관계 설계하기 * 개요 연관관계를 정하기 위해서는 단방향인지 양방향인지, 연관관계의 주인이 어디인지를 먼저 고려해야 합니다. 1 : 1연관관계의 경우, 대상 테이블에 외래키를 관리하는 경우 단방향이 제한됩니다. 매핑 방식은 마치 N : 1에서 연관관계 주인에 따라 @JoinColumn과 mappedBy를 사용하는 것과 비슷합니다. * 1: 1 주테이블에 외래키 단방향 1 : 1 주 테이블 외래키 단방향의 경우, N : 1 단방향과 같은 개념이라고 보면 됩니다. 테이블 구조 상, 외래키를 관리하고 있는 MEMBER 테이블처럼, Member 객체가 Locker locker를 가지고 있습니다. 연관관계 주인이 Member이므로, Locker locker를 통해서 연관관계 객체들이 수정 될 수 있습니다. * 1: 1 주테이블.. 2021. 9. 7.
Entity 개요 JPA를 사용하면, 기본은 엔티티(Entity)를 설정해 주는 것입니다. 일반 DB 테이블들을 어플리케이션 코드에서 매칭하기 위해서 설정합니다. 엔티티설정에는 필수적인 @Entity, @Id부터 유용한 설정들이 있습니다. 필수 값 지정 JPA로 DB를 사용하기 위해서 테이블이라는 의미로 엔티티를 지정해주어야 합니다. - @Entity, @Id 2개가 필수값입니다. @Id를 설정하는 방법 @Id는 보통 1씩 증가하는 Long 타입을 사용하여 유일성을 보장하도록 합니다. 이떄, @GeneratedValue를 사용하는데, entity PK를 설정하기 위한 키 생성 전략입니다. (default는 AUTO이다) @Entity @Data @NoArgsConstructor public class User { @.. 2021. 9. 5.
JPA 영속성 컨텍스트 개요 일반적으로 Spring Data Jpa를 사용하여 간단한 CRUD를 작업할 수 있습니다. 쉽게 사용 가능한 이유는, 해당 메서드들이 인터페이스에 추상화되어 있어 개발자는 가져다가 사용만 하면 되기 때문입니다. 한 단계 깊이 들어가서, 해당 인터페이스를 구현한 SimpleJpaRepository를 보면, Entity Manager를 통해 각 메서드들을 직접 구현했음을 확인 할 수 있습니다. 해당 기능으로 제어하는 JPA의 중요한 개념인 영속성의 동작 원리를 알아보겠습니다. 영속성 컨텍스트란? 영속성 컨텍스트는 "엔티티를 영구 저장하는 환경"이라는 뜻입니다. EntityMnager.persist(entity); 가 대표적인 코드입니다. 영속성 컨텍스트는 논리적인 개념으로, 눈에 보이지 않지만, Enti.. 2021. 8. 30.
네이버 지역검색 API를 활용한 맛집 List 제작 - (4) 1. wishListEntity 생성 2. Controller 생성 3. 검색, 조회, 위시리스트 삭제, 방문추가 Service 생성 1. wishListEntity 생성 @NoArgsConstructor @AllArgsConsctructor @Data public class WishListEntity extends MemoryDbEntity { ... } 2. Controller 생성 @RestController @RequiredArgsConstructor @RequestMapping("/api/restaurant") public class ApiController { private final WishListService wishListService; @GetMapping("/search") publi.. 2021. 8. 29.
JPA 개요 JPA는 Spring에서 기존에 Mybatis 사용을 대체하는 새로운 기술로 많이 사용합니다. 사용 방법과 문법은 공부했지만, 어떤 기술이고 어떻게 등장했는지 조사해보려고 합니다. 텍스트로만 보면 이해가 잘 되지 않기 때문에, 사진을 보고서 이해해보겠습니다. ORM, JPA, Spring Data JPA, Hiberante 등을 같이 살펴보겠습니다. ORM(Object–Relational Mapping) ORM은 객체지향 패러다임을 사용하여 이기종 시스템끼리 데이터를 변환하기 위해서 사용하는 기술입니다. Java에서 ORM 계층은 Java 클래스와 객체를 관계형 데이터베이스에 저장하고 관리할 수 있도록 변환합니다. 기존에 SQL DBMS와 같은 데이터베이스는 객체지향적이지 않고, 테이블에 정의된 i.. 2021. 8. 28.
네이버 지역검색 API를 활용한 맛집 List 제작 - (3) 1. WishListDto 작성 2. WishListService 작성 3. WishListServiceTest 작성 *WishListDto WishList 순수 entity를 건드리지 않고, dto를 만들어서 최대한 보호하도록 한다. @Data @NoArgsConstructor @AllArgsConstructor public class WishListDto { private int index; private String title; private String category; private String address; private String readAddress; private String homePageLink; private String imageLink; private boolean isVis.. 2021. 8. 22.
반응형