반응형 JPA19 다양한 연관관계 매핑 (일대일, 다대다) 2023. 02.07 14:30 복습 시작 일대일 [ 1: 1 ] 일대일 관계는 아래와 같은 특징이 있다. 일대일 관계는 그 반대도 일대일 관계다. 테이블 관계에서 일대다, 다대일은 항상 다쪽이 외래 키를 가진다. 반면에 일대일 관계는 주 테이블이나 대상 테이블 둘 중 어느 곳이나 외래 키를 가질 수 있다. 주 테이블에 외래 키 주 객체가 대상 객체를 참조하는 것처럼 주 테이블에 외래 키를 두고 대상 테이블을 참조한다. 외래 키를 객체 참조와 비슷하게 사용할 수 있어서 객체지향 개발자들이 선호한다. 이 방법의 장점은 주 테이블이 외래 키를 가지고 있으므로 주 테이블만 확인해도 대상 테이블과 연관관계가 있는지 알 수 있다. 대상 테이블에 외래 키 전통적인 데이터베이스 개발자들은 보통 대상 테이블에 외래 키.. 개발/JPA 2022. 2. 28. 다양한 연관관계 매핑 (다대일, 일대다) 2023. 02.07 14:00 복습 시작 다양한 연관관계 매핑 연관 관계 매핑 시에 고려해야 할 3가지가 있다. 다중성 단방향, 양방향 연관 관계의 주인 이 점을 유의하면서 다양한 연관관계들을 살펴보겠다. 다대일 단방향 먼저 다대일 [ N : 1 ]이다. 예시 코드는 아래와 같다. @Entity public class Member{ @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; //getter, setter } @Entity public class Team{ @Id @Generated.. 개발/JPA 2022. 2. 28. 연관관계 매핑 기초 2023. 02.07 13:00 복습 시작 연관관계 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전히 다른 특징을 가지며, 객체 관계 매핑(ORM)에서 가장 어려운 부분이 바로 객체 연관관계와 테이블의 연관 관계를 매핑하는 일이다. 이제 객체의 참조와 테이블의 외래 키를 매핑하는 방법을 알아보겠다. 알아둬야 할 용어들이 있다. 방향 : 단방향과, 양방향이 있다. 한쪽만 참조하는 것을 단방향, 양 쪽 모두 서로 참조하는 것을 양방향이라고 한다. 방향은 객체 관계에만 존재하고, 테이블은 항상 양방향이다. 다중성: 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인 :.. 개발/JPA 2022. 2. 25. 기본 키 매핑 2023. 02.07 12:00 복습 시작 기본 키 매핑 기본키를 애플리케이션에서 직접 할당하는 대신에 데이터베이스가 생성해주는 값을 사용하려면 어떻게 매핑해야 할까? 오라클의 시퀀스 오브젝트라던가 아니면 MySQL의 AUTO_INCREMENT 같은 기능을 사용해서 생성된 값을 기본 키로 사용하려면 어떻게 해야 할까? 데이터베이스마다 기본 키를 생성하는 방식이 서로 다르므로 이 문제를 해결하기는 쉽지 않다. JPA는 이런 문제를 어떻게 해결하는지 알아보자. 직접 할당 : @Id만 사용 자동 생성 (@GeneratedValue) IDENTITY : 기본 키 생성을 데이터베이스에 위임. (MySQL) SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용. (ORACLE) @SequenceGenerator 필.. 개발/JPA 2022. 2. 25. 객체와 테이블 매핑, DB 스키마 자동 생성, 필드와 컬럼 매핑 2023. 02.07 11:15 복습 시작 객체와 테이블 매핑 JPA를 사용하는 데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것. 이에 대해 학습해보자. @Entity @Entity가 붙은 클래스는 JPA가 관리하며 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. @Entity 적용 시 주의해야 할 점이 몇 가지 있다. 기본 생성자는 필수다. 즉, 파라미터가 없는 public or protected 생성자가 필수다. final 클래스, enum, interface, inner 클래스에서는 사용 불가하다. 저장할 필드에 final을 사용할 수 없다. @Entity에는 name이라는 속성도 있다. 이는 엔티티 이름을 지정하는데 name을 설정하지 않는다면 클래.. 개발/JPA 2022. 2. 24. 영속성 관리 2023. 02.07 09:30 복습 시작 JPA 기능 JPA가 제공하는 기능은 크게 두 가지가 있다. 엔티티와 테이블을 매핑하는 설계 부분 매핑한 엔티티를 실제 사용하는 부분 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보자. 먼저 엔티티 매니저란 무엇인가? 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 개발자의 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다. 일반적으로 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 엔티티 매니저 팩토리를 하나만 생성한다. 엔티티 매니저 팩토리를 생성하면 필요할 때마다 엔티티 매니저를 생성하면 된다. 엔티티 매니저 팩토리는 엔티티 매니저를 만드는 공장인데.. 개발/JPA 2022. 2. 23. JPA 2023. 02.07 09:00 복습 시작 JPA란 무엇인가? JPA는 자바 진영의 ORM 기술 표준이다. 그럼 ORM이란 무엇인가? ORM은 Object-Relational Mapping의 줄임말이다. 이름 그대로 객체와 관계형 데이터베이스를 매핑하는 것이다. 즉 SQL을 직접 짜지 않고 자바 코드로 편하게 객체를 ORM 프레임워크에 저장하면 데이터베이스에 저장할 수 있다. 예전에 Express와 Prisma를 다루어본 적이 있어서 쉽게 이해가 갔다. JPA에 대해 간단히 알아보았다. 그럼 더 중요한 궁금증이 남아있다. 우리는 왜 JPA, 즉 ORM을 사용할까? 웹 서비스를 운영하려면 고객 데이터도 저장하고 서비스 데이터도 저장해야 하고 또 이 데이터들을 사용해야 한다. 그러면 데이터를 저장하고 꺼내오.. 개발/JPA 2022. 2. 22. 이전 1 2 다음 반응형