JPA

<Spring JPA> 1.8 객체와 테이블 매핑

DeveloperRio 2020. 4. 14. 09:53

엔티티를 매핑하는 순서에는 몇가지가 있다.

 

첫번째로 해줘야 하는 것이 @Entity 와 @Table 을 써주는 것이다.

 

당연하지 이걸 말이라고 하는거야? 라고 할 수 있지만 그렇다. ㅎㅎ

@Entity 가 붙은 클래스는 JPA 가 관리한다. 따라서 JPA 와 관련해서 사용할 클래스는 엔티티를 꼭 붙여준다.

 

조건은 기본 생성자를 꼭 붙여준다. 그 생성자는 public 또는 protected 여야만 한다. 그리고 final, enum, interface, inner 클래스는 안된다. 뭔가 딱 봐도 안될 것 같다. 관리하려면 기본적인 클래스 여야한다 정도로 받아들이자. 그리고 모든 저장 필드에 final 을 사용하지 말자.

 

@Entity 에는 name 을 지정할 수 있다. 가급적 기본값으로 냅두고 클래스 이름을 사용하지만 같은 클래스 이름이 있는 엔티티의 경우는 이름을 명시해주면 된다.

 

@Table 에는 엔티티와 매핑할 테이블을 지정해준다. 테이블 이름과 클래스 이름이 다른 경우가 있으므로 이를 이용한다.

name, catalog, schema, uniqueConstraints 의 설정값이 있다. name 은 테이블 이름. 위에 언급한 클래스이름과 테이블 이름이 다른 경우에 사용하는데, 이걸 사용할 일이 있나 싶기도 하지만 실제로 회사에서 테이블 이름에 제약이 걸린 곳이 많다. 내가 쓰고 있는 클래스 이름이 있는데 이 클래스 이름은 내가 결정가능하지만 테이블 이름은 내가 결정할 수 없는 경우가 많다.  catalog 와 schema 를 직접 매핑하고 싶으면 이름을 명시하면 되고, 특별한 경우가 아니라면 name 만 지정해서 쓰게 될 것이다. 유니크 제약 조건을 쓰고 싶다면 유니크를 명시하면 된다. 나중에 필드에 직접 유니크 값을 명시할 수도 있지만, 복합유니크키나 키 이름을 지정해주려면 위 방법으로 해야한다.

 

 

반응형