데이터베이스에 있는 테이블정보와 매핑하려면 Spring단에서 엔터티를 만들어 매핑해야만한다.
그 엔티티를 만들고 매핑하기위한 어노테이션은 다음과같다.
• 객체와 테이블 매핑: @Entity, @Table
• 필드와 컬럼 매핑: @Column
• 기본 키 매핑: @Id
• 연관관계 매핑: @ManyToOne,@JoinColumn ...
@Entity
• @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.
• JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
유의사항
• 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
• final 클래스, enum, interface, inner 클래스 사용X
• 저장할 필드에 final 사용 X
사용법은 Member 클래스 위에다가 @Entity를 작성한다.
@Entity를 작성하면 JPA가 관리하여 데이터베이스와 테이블과 매핑한다.
속성: name
• JPA에서 사용할 엔티티 이름을 지정한다.
• 기본값: 클래스 이름을 그대로 사용(예: Member)
@Table
@Table 어노테이션은 데이터베이스에서 쓸 테이블 이름 또는 매핑하고싶은 테이블 이름을 쓴다.
이 어노테이션을 안쓰면, @Entity 의 기본 클래스명을 디폴트로 매핑한다.
@ID, @GeneratedValue
@ID 어노테이션은 데이터베이스에 PK 가 있듯이, 엔터티객체에도 PK를 설정을해줘야하는데,
그 작업을 간단하게 해주는 기능이다.
@GeneratedValue 어노테이션은 @ID로 설정한 컬럼의 값을 데이터베이스에 맡긴다.
이는 즉, 데이터베이스가 알아서 값을 설정해준다.
다양한 어노테이션 매핑
@Column
@Table과 비슷한 의미를 띈다. Entity내부에선 name 으로 쓰고싶지만, DB 내부엔 userName으로 저장되어있으면
컬럼명 불일치를 해결해주는 속성이다.
등록, 변경가능 여부, 문자길이 제약조건 , nullable 등등 다양한 제약조건을 걸수가있다.
@Enumerated
자바 Spring안에서 설정한 Enum타입을 사용하고싶을때 쓴다.
속성은 2가지가 있지만, Ordinal 속성은 쓰지말자.
왜냐하면 Enum타입의 값을 수정할때 발생하는 오류를 겉잡을수가 없기 때문이다.
'자바 > JPA' 카테고리의 다른 글
JPA 값타입 (0) | 2022.06.27 |
---|---|
JPA : 상속관계 매핑 (0) | 2022.06.15 |
JPA: 연관관계 매핑 (1:1 , 1:N, N:1, N:M) (0) | 2022.06.14 |
JPA 의 기초(CRUD) 다루어보기 (0) | 2022.01.07 |
스프링: 왜 JPA를 쓰는가? (0) | 2022.01.05 |