크게 두 종류의 코드로 JPA 개발이 가능합니다.
- JPA 객체에 해당하는 엔터티 클래스
- 엔터티 객체를 관리하는 기능을 가진 Repository
엔티티 클래스
@Entity
@Table(name = "tbl_memo")
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long mno;
@Column(length = 200, nullable = false)
private String memoText;
}
@Entity
해당 클래스가 엔티티를 위한 클래스이며, 해당 클래스의 인스턴스들이 JPA로 관리되는 엔티티 객체임을 의미한다.
@Table
엔티티 클래스를 어떠한 테이블로 생성할 것인지에 대한 정보를 담기 위한 어노테이션이다.
@Id와 @GeneratedValue
@Id는 Primary Key를 지정하는 어노테이션이며 @GeneratedValue는 PK를 자동으로 생성하고자 할 때 사용한다.
@GeneratedValue의 생성 방식은 아래와 같다.
- AUTO : JPA의 구현체(Hibernate)가 생성방식을 결정
- IDENTITY : 사용하는 데이텁이스가 키 생성을 결정
- SEQUENCE : 데이터베이스의 SEQUENCE를 이용해서 키를 생성. @SequenceGenerator와 같이 사용.
- TABLE : 키 생성 전용 테이블을 생성해서 키 생성. @TableGenerator와 같이 사용.
@Column
컬럼에 다양한 속성을 지정할 때 사용한다. nullable, name, length, columnDefinition(기본값설정) 등이 있다.
@Builder
Builder 패턴을 사용할 때 쓰는 어노테이션으로 @AllArgsConstructor와 @NoArgsConstructor를 항상 같이 처리해야 컴파일 오류가 생기지 않는다.
'Back-End > Spring' 카테고리의 다른 글
JPA Paging(Page, Pageable, PageRequest, Sort) (0) | 2021.05.12 |
---|---|
JpaRepository (0) | 2021.05.12 |
Spring Context Root 경로 (Resources 경로) (0) | 2021.03.21 |
Spring AOP 용어 정리 (0) | 2021.03.21 |
Spring AOP : @Before와 Request로 ServletPath Logging (0) | 2021.03.21 |
댓글