테이블 매핑
테이블 매핑
도메인 클래스에 @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 설정시에는 도메인과 도메인 사이에 관계 테이블이 필요하다.