본문 바로가기

JPA/JPA원리22

10 JPA 단방향 연결관계 (객체적 설계도입) 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 객체 연관관계와 테이블 연관관계 중 테이블 연관관계식으로 설계하면 다음과 같습니다. Member Team 이에 대해 1. 팀과 멤버 insert 2. 멤버가 어디 팀 소속인지 select 위의 2가지를 해보면 아래의 코드와 같습니다. 참조가 아닌 id를 통해 찾아가기 때문에 번거롭고, 객체지향적이지 못합니다. 이제 객체 지향적 설계로 바꿔보겠습니다. 멤버와 팀은 팀이 여러 멤버를 가질 수 있는 일대다 관계입니다. 위와 같이 하기 위해 엔티티에 수정이 필요합니다. 수정된 Member 이제 Long teamId가 아닌 Team team을 .. 2021. 7. 5.
9 JPA 요구사항 추가(관계형 DB의존적 설계) 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 아래와 같은 요구사항이 추가되었습니다. • 회원은 상품을 주문할 수 있다. • 주문 시 여러 종류의 상품을 선택할 수 있다. 위의 설계는 관계형 DB에 의존적임을 알 수 있습니다. 만약 객체 지향의 세상에서는 예를 들어 Order테이블에 MemberId가 아닌 Member를 참조값으로 가지고 있을 것입니다. 일단은 관계형DB 의존적으로 설계를 하고, 엔티티 클래스들을 만들겠습니다. 후에 하나씩 객체지향 적으로 수정하겠습니다. Member Order OrderItem Item Order의 주문상태를 위한 OrderStatus enum 위.. 2021. 7. 5.
8 JPA 기본키 매핑 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 기본키 매핑 어노테이션에는 @ID, @GerneratedValue 가 있습니다. 예를 들어 아래와 같이 사용합니다. 또한 기본키를 매핑하는 데에는 몇 가지 방법이 있습니다. - 직접 할당: @Id만 사용 - 자동 생성(@GeneratedValue) 1. IDENTITY: 데이터베이스에 위임, MYSQL 2. SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE @SequenceGenerator 필요 3. TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용 @TableGenerator 필요 4. AUTO: 방언에 따라 .. 2021. 7. 5.
7 JPA 필드와 칼럼 매핑 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 아래와 같은 요구사항을 만족하는 모델을 설계해보겠습니다. 1. 회원은 일반 회원과 관리자로 구분해야 한다. 2. 회원 가입일과 수정일이 있어야한다. 3. 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다. 일단 위의 1번 요구사항을 위한 회원타입 enum을 만듭니다. 2번, 3번 요구사항을 위해 아래와 같이 필드를 추가하고, 객체와 테이블을 매핑을 해줘야 합니다. 매핑 어노테이션은 아래와 같이 몇가지가 있습니다. 이제 각각의 매핑 어노테이션을 하나씩 알아보겠습니다. 🔑 @Column @Column은 객체의 필드와.. 2021. 7. 4.