JPA

JPA & QueryDSL

[JPA] 연관관계 매핑 - @ManyToOne, @OneToMany

JPA 연관관계 매핑의 종류 JPA 연관관계 매핑의 종류는 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany가 있다. 이 글에서는 @ManyToOne과 @OneToMany 관계에 대해 다룬다. 아래 예제에서는 Team에 속해있는 여러 Member들을 가정했다. @ManyToOne(다대일 매핑) 가장 많이 사용하는 연관관계로 여러 개(Many)의 멤버가 한 개(One)의 팀에 속해있는 것을 생각하면 된다. Member가 Team의 ID를 FK로 갖게 된다. 이러한 관계에서 연관관계의 주인은 Member이다. @Entity public class Member { @Id @GeneratedValue private Long id; private String username; @..

JPA & QueryDSL

[JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성

필드와 컬럼 매핑 엔티티 클래스의 각 필드에 여러 가지 옵션을 갖는 어노테이션을 붙여서 더 자세히 매핑할 수 있다. Column 별 매핑 상세 @Column : 컬럼 DB 테이블의 각 컬럼 관련 제약사항 등을 추가할 수 있다. @Enumerated : enum 타입 DB에는 enum 타입이 없기 때문에 속성을 지정할 수 있다. enum은 기본적으로 숫자, 문자열 두 가지가 있다. @Enumerated(EnumType.STRING) private RoleType roleType; EnumType.STRING으로 지정하면 실제 enum의 문자열이 저장되고, EnumType.ORDINAL로 지정하면 enum 순서를 0부터 시작되는 숫자로 지정된다. STRING이 권장되고, ORDINAL은 사용하지 않는 게 좋..

JPA & QueryDSL

[JPA] @Entity - 기본 키 매핑

@Entity 클래스에는 기본적으로 PK(PrimaryKey)가 있어야 한다. PK로 사용할 칼럼에 @Id 어노테이션을 사용하여 해당 칼럼을 PK로 설정한다. 이 PK 매핑 방법과 여러 가지 속성들에 대해 알아보자. PrimaryKey Mapping 기본적으로 @Id 어노테이션은 꼭 필요하다. 여기에 자동 생성을 위한 @GeneratedValue 어노테이션을 붙일 수 있다. PrimaryKey를 사용자가 설정하는 userId 등으로 설정할 때는 @Id 어노테이션만 사용하면 되고, ID를 임의의 값으로 순차적으로 증가시킬 때는 @GenaeratedValue 어노테이션을 추가하면 된다. Key 자동 할당 Key를 자동 할당하는 방법에는 IDENTITY, SEQUENCE, TABLE, AUTO 가 있다. Ke..

JPA & QueryDSL

[JPA] 엔티티 매핑

ORM은 객체와 RDB의 테이블을 자동으로 매핑하는 기술이다. JPA에서는 Java 클래스를 Entity로 지정하여 해당 Entity 클래스와 DB의 테이블을 매핑한다. 엔티티 클래스 @Entity @Entity가 붙은 클래스는 JPA가 관리하고, 이를 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 붙여줘야 한다. @Entity public class Member{ @Id Long id; String name; public Member(){} } @Id로 Primary Key를 필수로 설정해줘야 하고, 기본 생성자가 필수로 존재해야 한다. @Entity 어노테이션의 속성으로 name을 추가할 수 있다. 이 속성을 추가하면, 실제 엔티티 클래스와 DB의 엔티티 이름을..

JPA & QueryDSL

[JPA] ORM, JPA, Hibernate, Spring Data JPA의 관계

ORM(Object Relatioal Mapping) ORM은 객체 관계 매핑을 의미한다. Java와 같은 객체지향 언어에서의 객체와 RDB의 테이블을 자동으로 매핑하는 방법이다. 클래스는 데이터베이스의 테이블과 매핑하기 위해 만들어진 것이 아니기 때문에 RDB의 테이블과 불일치가 존재할 수밖에 없다. ORM이 이러한 불일치를 해결하는 역할을 해준다. ORM은 SQL 작성이 아닌 Java 코드(메서드)로 데이터를 조작할 수 있도록 도와준다. ORM의 장점 DB 쿼리를 객체지향적으로 조작할 수 있다. SQL을 작성하는 양이 현저히 줄어 개발 비용이 줄어든다. 객체지향적으로 DB에 접근할 수 있어 코드의 가독성이 좋아진다. 재사용 및 유지보수성 증대 ORM의 통해 매핑된 객체는 모두 독립적으로 작성되어 있어..

JPA & QueryDSL

[JPA] 영속성 컨텍스트의 주요 개념 / Spring Data JPA에서의 영속성

영속성 컨텍스트영속성 컨텍스트는 데이터(Entity)를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 영속성 컨텍스트는 논리적인 개념으로 눈에 보이는 개념은 아니지만, EntityManager를 생성할 때 1대 1로 영속성 컨텍스트가 하나 만들어지고, EntityManager를 통해 영속성 컨텍스트에 접근할 수 있다. EntityManager 클래스의 persist(), find(), remove() 등의 메서드를 통해 영속성 컨텍스트에 접근하여 데이터를 핸들링할 수 있다. 이 영속성 컨텍스트의 이점으로는 대표적으로 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지, 지연 로딩 5가지가 있다.이 개념들은 아래서 다시 알아보고,..

HSRyuuu
'JPA' 태그의 글 목록 (2 Page)