테이블 매핑

테이블 매핑

도메인 클래스에 @Entity 어노테이션을 지정한다. name 속성으로 테이블명을 설정할 수 있다.



ID 지정

모든 테이블은 PK 구성이 되어야한다. 도메인 클래스에 @Id 어노테이션을 지정하면 된다. 또한 @Column 어노테이션을 이용하여 테이블의 컬럼명도 지정할 수 있다. 만일 @Column 어노테이션을 사용하지 않을 경우에는 자동으로 프로퍼티명이 사용된다.

만약 Id 형태가 DB 에서 자동으로 만들어지는 경우라면 @GeneratedValue(strategy = GenerationType.AUTO) 어노테이션을 추가한다. 그렇지 않고 사용자가 직접 ID 를 지정하는 경우라면 어노테이션을 지정하지 않는다.

프로퍼티 지정

테이블의 컬럼을 매핑한다. 기본적으로 도메인 클래스의 모든 속성은 프로퍼티로 자동 등록된다. 또한 @Column 어노테이션을 이용하여 테이블의 컬럼명도 지정할 수 있다. 만일 @Column 어노테이션을 사용하지 않을 경우에는 자동으로 프로퍼티명이 사용된다.

만약 특정 프로퍼티가 매핑을 하지 않으려 할 경우에는 @Transient 어노테이션을 추가한다.

n:1 설정

다른 테이블과 n:1 관계를 설정할 경우에는 @ManyToOne 어노테이션을 추가한다. 또한, FK 에 사용되는 컬럼은 @JoinColumn 으로 컬럼명을 지정할 수 있다.

1:n 설정

다른 테이블과 1:n 관계를 설정할 경우에는 @OneToMany 어노테이션을 추가한다. 또한, FK 에 사용되는 컬럼은 @JoinColumn 으로 컬럼명을 지정할 수 있다.

class Article {
    // ...
    @OneToMany(mappedBy = "article")
    private Set<ArticleFile> attachedFiles = new HashSet<ArticleFile>();
}

n:n 설정

n:n 설정시에는 도메인과 도메인 사이에 관계 테이블이 필요하다.

results matching ""

    No results matching ""