본문 바로가기

Java

JPA 객체와 테이블 매핑

@Entity

 @Entity 가 붙은 클래스는 엔티티라 부르며 JPA 가 관리

 엔티티로 등록하게 되면 데이터 베이스에 테이블로 생성

 

- 기본 생성자 필수

- final 클래스, enum, interface, inner 클래스 사용이 제한

- 저장할 필드에 final 사용할 수 없음

 

속성

@Documented
@Target(TYPE)
@Retention(RUNTIME)
public @interface Entity {

	String name() default "";
    
}

 

 name: 

    - JPA 에서 사용할 엔티티 이름을 지정할 수 있음.

    - 기본값은 클래스 이름 (예: Member)

    - 같은 이름의 엔티티가 없으면 가급적 기본값을 사용

 


@Table

 

@Table은 엔티티와 매핑할 테이블 지정

 

속성

@Target(TYPE) 
@Retention(RUNTIME)
public @interface Table {

    String name() default "";

    String catalog() default "";

    String schema() default "";

    UniqueConstraint[] uniqueConstraints() default {};

    Index[] indexes() default {};
}

 

 name: 매핑할 테이블 이름, 기본값으로 엔티티 이름을 사용

 catelog: 데이터베이스 catalog 매핑

 schema: 데이터베이스 schema 매핑

 uniqueConstraints: DDL 생성 시에 유니크 제약 조건 생성

 


예시

 

엔티티 생성

@Entity
@Table(name = "member_test")
public class Member {

    @Id @GeneratedValue
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

 

생성된 테이블

 


참조

자바 ORM 표준 JPA 프로그래밍 - 김영한

'Java' 카테고리의 다른 글

JPA 임베디드 타입 ( @Embeddable, @Embedded )  (0) 2024.02.09
JPA 데이터베이스 스키마 자동 생성  (0) 2024.01.31
JPA Unknown entity 해결방법  (0) 2024.01.29
JPA 구현체 하이버네이트 사용방법  (0) 2024.01.27
JPA 란?  (1) 2024.01.21