[JPA] 고급 매핑(상속관계 매핑) - 엔티티(Entity) 매핑 (7)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 상속 관계 매핑관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다.대신 관계형 데이터베이스에는 슈퍼타입 서브타입 관계라는 모델링 기법이 상속과 유사하다.ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다.슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현하는 3가지 방법조인 전략: 각각을 모두 테이블로 만들고 조회할 때 조인을 사용한다.단일 테이블 전략: 테이블을 하나만 사용해서 통합한다.구현 클래스마다 테이블 전략: 서브 타입마다 하나의 테이블을 만든다.  ✅ 조인 전략엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부..
[JPA] 다양한 연관관계 매핑 - 엔티티(Entity) 매핑 (6)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 다대일(@ManyToOne)다대일 관계의 반대 방향은 항상 일대다 관계이고, 일대다 관계의 반대 방향은 항상 다대일 관계이다. 데이터베이스 테이블의 일(1), 다(N) 관계에서 외래 키는 항상 다 쪽에 있다. 따라서 객체 양방향 관계에서 연관관계 주인은 항상 다 쪽이다. ▶ 다대일 단방향 [N:1]단방향은 한쪽만 참조가 가능하다.회원은 Member.team으로 팀 엔티티를 참조할 수 있지만 반대로 팀에는 회원을 조회하는 필드가 없다.🔽 다대일(@ManyToOne) 단방향 코드@Entitypublic class Member { @Id @GeneratedValue @Column(name = "MEMBER_..
[JPA] 단방향 연관관계와 양방향 연관관계 - 엔티티(Entity) 매핑 (5)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 단방향 연관관계▶ 객체 연관관계 VS 테이블 연관관계객체 연관관계회원 객체(Member)는 Member.team 필드(멤버 변수)로 팀 객체와 연관관계를 맺는다.회원 객체와 팀 객체는 단방향 관계이다. 회원은 Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없다.테이블 연관관계회원 테이블은 TEAM_ID 외래 키로 팀 테이블과 연관관계를 맺는다.회원 테이블과 팀 테이블은 양방향 관계이다. 회원 테이블의 TEAM_ID 외래 키를 통해서 회원과 팀을 조인할 수 있고, 반대로 팀과 회원도 조인할 수 있다.객체 연관관계와 테이블 연관관계의 가장 큰 차이참조를 통한 연관관계는 항상 단방향이..
[JPA] 연관관계 매핑 - 엔티티(Entity) 매핑 (4)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 연관관계란?연관관계란 두 도메인(객체, 테이블)이 서로 논리적인 의미를 갖고 양쪽을 참조하는 관계를 뜻한다.JPA에서의 연관관계는 데이터베이스의 테이블 간 관계를 객체지향 프로그래밍의 클래스 간 관계로 매핑하는 것을 의미한다.객체지향 프로그램에서 객체들이 연관관계를 맺는 방법과 데이터베이스에서 테이블들이 연관관계를 맺는 방법이 다른데, 이 간극을 채워주기 위한 기술이 JPA이다.  ✅ 연관관계가 필요한 이유위와 같은 구조에서 연관관계가 없다면 찾고자 하는 회원의 팀을 찾는 코드는 다음과 같다.Member findMember = em.find(Member.class, member.getId()); //찾고자 하는 m..
[JPA] 데이터베이스 스키마 자동 생성
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 데이터베이스 스키마 자동 생성옵션설명create기존 테이블 삭제 후 다시 생성 (DROP + CREATE)create-dropcreate와 같으나 종료 시점에 테이블 DROPupdate변경 사항만 반영validate엔티티와 테이블이 정상 매핑되었는지만 확인none사용하지 않음⚠️ 운영 장비에는 절대 create, create-drop, update를 사용하면 안 된다.개발 초기 단계: create, update테스트 서버: update, validate스테이징, 운영 서버: validate, none  📍 참고JPA 기본편 정리
[JPA] 필드와 컬럼 매핑 - 엔티티(Entity) 매핑 (3)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 필드와 컬럼 매핑▶ @Column객체 필드를 테이블 컬럼에 매핑한다.속성기능기본값name필드와 매핑할 테이블의 컬럼 이름객체의 필드 이름nullable(DDL)null 값의 허용 여부를 설정한다.trueunique(DDL)한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다. columnDefinition(DDL)데이터베이스 컬럼 정보를 직접 줄 수 있다. length(DDL)문자 길이 제약 조건, String 타입에만 사용한다.255precision / scale(DDL)BigDecimal 타입에서 사용한다. 아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다.precision=19 / scale=2inser..
[JPA] 기본 키 매핑 - 엔티티(Entity) 매핑 (2)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 기본 키 매핑▶ @Id, @GeneratedValueEntity를 식별할 수 있는 Key를 매핑할 때 사용하는 @Id, @Generatedvalue 어노테이션과 속성(전략)이 있다.직접 할당: Key로 매핑할 Field에 @Id만 사용하면 된다.자동 생성: @GeneratedValue, Entity 객체 생성시 자동으로 Key를 정해주는 방법, 전략에 따라 자동 생성된다.IDENTITY: 기본 Key 생성을 데이터베이스에 위임한다.SEQUENCE: 데이터베이스 시퀀스를 사용해서 기본 Key를 할당한다.  TABLE: 키 생성 테이블을 사용한다.AUTO: 기본 전략으로,DB Dialect에 따라 자동 지정된다.🔽 ..
[JPA] 객체와 테이블 매핑 - 엔티티(Entity) 매핑 (1)
·
Programming/JPA
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다. ✅ 객체와 테이블 매핑▶ @EntityJPA를 사용해서 테이블과 매핑할 클래스에 설정한다.속성기능기본값nameJPA에서 사용할 엔티티 이름을 지정클래스 이름 그대로 사용주의사항기본 생성자는 필수이다.final 클래스, enum, interface, inner 클래스에는 사용할 수 없다.저장할 필드에 final을 사용하면 안 된다. ▶ @Table엔티티와 매핑할 테이블을 지정한다.속성기능기본값nameJPA에서 사용할 엔티티 이름을 지정클래스 이름 그대로 사용catalog데이터베이스 catalog를 매핑 schema데이터베이스 schema를 매핑 uniqueConstraints(DDL)DDL 생성 시에 유니크 제약 조건 ..
soeun2537
'Programming' 카테고리의 글 목록 (7 Page)