ORM6 [자바 ORM 표준 JPA 프로그래밍] 고급 매핑 (7장) 📌 상속 관계 매핑 관계형 데이터베이스에는 상속이 없다. 그나마 '슈퍼타입-서브타입 관계' 모델링 기법이 상속과 비슷하다. 즉, ORM에서의 상속 관계 매핑은 이 모델링 기법이고 3가지 방법으로 구현할 수 있다. 조인 전략 : 각각을 모두 테이블로 만들고 조회 시 조인을 사용한다. 단일 테이블 전략 : 테이블을 하나만 사용해 통합한다. 구현 클래스 테이블 전략 : 서브 타입마다 하나의 테이블을 만든다. 1️⃣ 조인 전략 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아 기본 키 + 외래 키로 사용한다. 테이블은 타입의 개념이 없어 타입을 구분하는 칼럼을 추가해야 한다. @Entity @Inheritance(strategy = InheritanceType.JOINED) // 상속의 부모 클.. 2022. 12. 12. [자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 (6장) 📌 다대일 다대일 관계에서 외래 키는 항상 다쪽에 존재한다. 즉, 연관관계의 주인은 항상 다쪽이다. 1️⃣ 다대일 단방향 [N:1] 회원은 Member.team으로 팀 엔티티를 참조할 수 있지만 반대로는 참조할 수 없다. 2️⃣ 다대일 양방향 [N:1, 1:N] 다대일 양방향에서 핵심은 다음과 같다. 양방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 양방향 관계는 항상 서로를 참조해야 한다. 📌 일대다 다대일 관계의 반대 방향이다. 보통 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션을 사용한다. 1️⃣ 일대다 단방향 [1:N] 보통 자신이 매핑한 테이블의 외래 키를 관리하는데 Team.members로 회원 테이블의 TEAM_ID 외래 키를 관리한다. 이 경우 mappedBy 속성을 사용하지 않고 .. 2022. 12. 2. 자바 ORM 표준 JPA 프로그래밍 : 연관관계 매핑 기초 (5장) 📌 단방향 연관관계 회원과 팀의 관계를 통해서 객체와 테이블의 차이를 보면 다음과 같다. 객체 : 단방향 관계이다. 회원은 Team 필드를 통해서 팀을 알 수 있지만, 반대로 팀은 알 수 없다. 테이블 : 양방향 관계이다. 외래 키를 통해서 서로 JOIN 할 수 있다. 참조를 통한 연관관계는 항상 단방향이다. 양방향으로 만들고 싶으면 반대쪽에서도 필드를 추가해 참조를 보관해야 한다. 하지만 이건 서로 다른 단방향 관계 2개이다. 테이블과 다르게 외래 키 하나로 양방향으로 JOIN 할 수 없다. 1️⃣ 순수한 객체 연관관계 참조를 통해서 연관관계를 탐색하는 것을 객체 그래프 탐색이라고 한다. 2️⃣ 테이블 연관관계 데이터베이스의 외래 키를 사용해서 연관관계를 탐색하는 것을 조인이라고 한다. 3️⃣ 객체 관.. 2022. 11. 18. 자바 ORM 표준 JPA 프로그래밍 : 엔티티 매핑 (4장) 🌀Entity 이 어노테이션을 붙이면 JPA가 해당 클래스를 테이블과 매핑시켜 관리한다. JPA 관리하에 놓인 클래스를 엔티티라 부른다. 🧷 속성 name : 엔티티의 이름. 디폴트는 클래스 명, 다른 패키지의 엔티티 클래스와 겹치지 않아야 한다. 🧷 주의사항 기본 생성자 : JPA는 엔티티 객체를 생성할 때 기본 생성자를 사용한다. final 클래스, enum, interface, inner 클래스에 사용할 수 없다. 저장할 필드에 final을 사용하면 안 된다. 🌀Table 엔티티와 매핑할 테이블을 지정한다. 🧷 속성 name : 매핑할 테이블 이름. 디폴트는 엔티티 이름 catalog : 데이터베이스에서 catalog를 매핑 schema : 데이터베이스에서 schema를 매핑 uniqueConstr.. 2022. 10. 6. [Spring] Spring Data JPA (2) 📌 기본 설정 Spring Boot 프로젝트를 생성할 때 'Auto Configuration'이라는 기능 덕분에 관련된 설정이 자동으로 추가된다. Spring Data JPA도 마찬가지이지만 구체적인 값을 지정해야 데이터베이스를 사용할 수 있다. DB를 위한 JDBC 드라이버 설정하기 Spring Boot 프로젝트 내 DB 설정하기 ✔️ Application.properties 설정 (프로젝트 내 DB 설정) spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/{DB명} spring.datasource.username= spring.datasource.passwor.. 2022. 8. 13. 자바 ORM 표준 JPA 프로그래밍 : JPA 소개 (1장) 📌 SQL을 직접 다룰 때 발생하는 문제점 ✔️ 반복, 반복 그리고 반복 DB는 객체 구조와는 다른 데이터 구조를 가져 객체를 DB에 직접 저장하거나 조회할 수 없다. 따라서 개발자가 직접 애플리케이션과 API 중간에서 변환 작업을 직접 해야 한다. 객체를 DB에 CRUD하려면 너무 많은 코드를 작성해야 한다. 즉, 비슷한 일을 계속 반복해야 한다. ✔️ SQL에 의존적인 개발 기능을 모두 개발하고 나서 추가적인 요청이 들어왔을 때 너무 많은 코드(등록, 수정, 연관 객체 등)를 수정해야 한다. 엔티티를 신뢰하고 사용할 수 없다. 일일이 확인해야 한다. 강한 의존관계를 가져 진정한 의미의 계층 분할이 아니다. ✔️ JPA와 문제 해결 JPA를 사용하면 객체를 데이터베이스에 저장하고 관리할 때 JPA가 제.. 2022. 8. 12. 이전 1 다음