- BaseEntity
- 모든 엔티티에서 공통으로 있는 객체가 있으면 BaseEntity를 정의해서 활용할 수 있다.
@Getter @MappedSuperclass @NoArgsConstructor(access = AccessLevel.PROTECTED) public class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // Primary key 생성해주는 어노테이션, @Id 선언 후 사용 private Long id; public BaseEntity(Long id) { super(); this.id = id; } public boolean isNew() { return this.id == null; } public void setId(Long id) { this.id = id; } }
- @MappedSuperclass
- 객체의 입장에서 공통 매핑 정보가 필요할 때 사용
- 부모 클래스에 선언하고 상속받아서 사용하고 싶을 때 해당 어노테이션 선언한다.
- @NoArgsConstructor(access = AccessLevel.PROTECTED)
- 엔티티는 무조건 해당 NoArgsConstructor을 가져야한다.
- AccessLevel이 Protected 인 경우는 자식 객체가 부모 생성자를 호출해야하기 때문이다. private 같은 경우 부모 생성자에 접근 불가
- @Id
- 해당 엔티티의 Long 타입의 id 필드를 Primary key로 생성 해준다.
- @GeneraredValue
- 기본키의 생성 방식을 결정한다.
- @Id를 선언하고 @GeneraredValue(strategy = GenerationType.IDENTITY) 를 선언해주면 기본키를 자동으로 1씩 증가한다.
- mysql은 @GeneraredValue(strategy = GenerationType.IDENTITY), oracle은 @GeneraredValue(strategy = GenerationType.SEQUENCE)로 선언해준다. AUTO도 있다.
728x90
'Back-end > Spring Boot' 카테고리의 다른 글
스프링부트3 백엔드개발자되기 / 2장 스프링 부트 3 시작하기 (0) | 2023.11.18 |
---|---|
스프링부트3 백엔드개발자되기 / 1장 자바 백엔드 개발자가 알아두면 좋은 지식 (0) | 2023.11.18 |
[Spring DB] Annotation (0) | 2023.11.06 |
[Spring Boot] Thymeleaf (0) | 2023.11.03 |
[Spring DB] JpaRepository (1) | 2023.11.03 |