0.개요저번 글에 대한 내용을 정리하자면, 엔티티의 연관관계를 매핑 할 때는 3가지를 고려해야 한다.1) 다중성2) 단방향, 양방향3) 연관관계의 주인1. 일대다데이터베이스 테이블의 일 & 다 관계에서 외래 키는 항상 다쪽에 있다. 그렇기에 객체 양방향 관계에서의 주인은 항상 다쪽에 해당한다. 일대다 관계는 전에 작성했던 글에서 봤던 다대일 관계의 반대 방향이다. 일대다 관계는 엔티티를 하나 이상 참조할 수 있기 때문에 자바 컬렉션 중에 하나를 사용해야 한다. 1-1. 일대다 단방향 [1:N]하나의 팀은 여러 회원을 참조할 수 있을 때 이 관계를 일대다 관계라 한다.팀은 회원을 참조하지만, 회원은 팀을 참조하지 않는다면 이 둘의 관계는 단방향이다. -> Team.members를 통해 회원 테이블의 TE..
Back-end/JPA

0. 개요엔티티들은 대부분 다른 엔티티와 연관관계가 있다.하지만, 객체는 참조를 사용해서 관계를 맺고, 테이블은 외래 키를 사용해서 관계를 맺는 다른 특징을 가지고 있고, ORM에 있어서 어려운 부분이 객체 연관 관계 테이블 연관관계의 매핑이다. 1. 단방향 연관관계: 회원과 팀의 관계-> (N:1)의 단방향 관계로 가정 위에 보다시피: 객체 연관관계-> Member.team 필드로 팀 객체와 연관관계를 맺는다.-> 회원 객체와 팀 객체는 단방향 관계이다.: 테이블 연관관계-> TEAM_ID 외래 키를 통해 팀 테이블과 연관관계를 맺는다.-> 회원 테이블과 팀 테이블은 양방향 관계이다.-> 회원 테이블의 TEAM_ID 외래 키를 통해 회원과 팀을 조인할 수 있고, 팀과 회원도 조인할 수 있다. = 객체..

1. 테이블 매핑1-1. @EntityJPA를 사용해서 테이블과 매핑할 클래스는 @Entity라는 어노테이션을 반드시 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로 'name'이라는 속성이 있다. 속성name-> JPA에서 사용할 엔티티 이름을 지정한다.-> 설정하지 않는다면 클래스 이름이 기본값이다. 주의점-> 기본 생성자는 필수!-> final, enum, interface, inner 클래스에는 사용할 수 없다.-> 저장할 필드에 final을 사용하면 안된다. 1-2. @Table엔티티와 매핑할 테이블을 지정한다. 생략할 경우 매핑한 엔티티 이름을 테이블 이름으로 사용한다. 속성name-> 매핑할 테이블 이름으로 기본값으로는 엔티티 이름을 사용한다. catalog-> cata..

1. 엔티티 매니저 팩토리 및 엔티티 매니저JPA가 제공하는 기능-> 엔티티와 테이블을 매핑하는 설계-> 매핑한 엔티티를 실제 사용 이렇게 두 가지로 나눌 수 있다고 한다. 엔티티 매니저는 매핑한 엔티티를 실제 사용할 수 있도록 해주는 것으로, 간단하게 정리하면 다음과 같다.엔티티 매니저-> 엔티티를 저장, 수정, 삭제, 조회 등 엔티티와 관련된 모든 일을 처리한다.-> 엔티티를 저장하는 가상의 데이터베이스로 생각하면 편하다. 데이터베이스를 하나만 사용하는 애플리케이션에서는 일반적으로 EntityManagerFactory를 하나만 생성한다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa"); 위의 코드는 META_INF/p..