전체 글38 [JPA] 값 타입 JPA의 데이터 타입을 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다. 엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 식별자가 없고 숫자나 문자같은 속성만 있으므로 추적할 수 없다. 값 타입은 다음 3가지로 나눌 수 있다. 기본값 타입 임베디드 타입(복합 값 타입) 컬렉션 값 타입 기본값 타입 @Entity public class Member { . @Id @GeneratedValue private Long id; //기본값 타입 private String name; private int age; ... } 위의 엔.. 2020. 9. 23. [JPA] 프록시와 연관관계 관리 프록시 엔티티를 조회할 때 엔티티들이 항상 사용되는 것은 아니다. 예를 들어 회원 엔티티를 조회하여 정보를 출력할 때 팀 엔티티는 전혀 사용하지 않으므로 회원과 연관된 팀 엔티티까지 데이터베이스에서 함께 조회해 두는 것은 효율적이지 않다. JPA는 이런 문제를 해결하려고 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연로딩이라고 한다. 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라 한다. 엔티티를 조회할 때는 find()를 사용한다. 하지만 엔티티를 실제 사용하는 시점까지 데이터베이스 조회를 미루고 싶으면 EntityManager.getReference() 메소드를 사용하면 된다. .. 2020. 9. 22. [JPA] 고급 매핑 상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 조인 전략 조인 전략은 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략이다. 따라서 조회할 때 조인을 자주 사용한다. 테이블은 객체와 달리 타입의 개념이 없기 때문에 타입을 구분하는 컬럼을 추가해야한다. @Entity @Inheritance(strategy = Inh.. 2020. 9. 15. [JPA] 연관관계 매핑 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 하지만 객체는 참조를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전히 다른 특징을 가진다. 따라서 객체의 참조와 테이블의 외래 키를 매핑 해주어야 한다. 참조를 통한 연관관계는 언제나 단방향이다. 반대쪽 엔티티에 연관관계를 하나 더 만들어서 서로 참조하게 해서 양방향 연관관계를 만들 수 있지만, 정확히 이야기하자면 이것은 양방향 관계가 아니라 서로 다른 단방향 관계 2개이다. 반면에 테이블은 외래 키 하나로 양방향으로 조인할 수 있다. 외래키를 매핑 할 때에는 @JoinColomn을 사용한다. name 속성에는 매핑할 외래 키 이름을 지정한다. 이 어노테이션은 생략할 수 있다. 생략하게 된다면 외래 키를 찾을 때 기본 전.. 2020. 9. 10. 이전 1 ··· 5 6 7 8 9 10 다음