반응형
✔ Java 11
✔ Gradle 7
✔ Spring boot 2.6.3
✔ 목표 JPA Auditing 사용하여 생성 날짜, 수정 날짜의 컬럼 자동화
1. 엔티티 설계
디렉토리 구조
├─entity
│ │ BaseEntity.java
│ │
│ ├─name
│ │ ├─boardName
│ │ │ │ BoardName.java
│ │ │ │
│ │ │ └─repository
│ │ │ BoardNameRepository.java
│ │ │
│ │ └─userName
│ │ │ UserName.java
│ │ │
│ │ └─repository
│ │ UserNameRepository.java
│ │ UserNameRepositoryExtension.java
│ │ UserNameRepositoryImpl.java
1. Board Entity
@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class BoardMinj extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "board_id", nullable = false)
private Long id;
@Column(name = "board_title", nullable = false)
private String boardTitle;
@Column(name = "board_content", nullable = false)
private String boardContent;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private UserMinj userMinj;
}
@NoArgsConstructor(access = AccessLevel.PROTECTED)
- 엔티티 외부 접근을 차단하는 매개변수가 없는 생성자를 생성하는 어노테이션
@ManyToOne(fetch = FetchType.LAZY)
- 지연 로딩으로 설정
1-2. JPA Auditing - BaseEntity
생성 날짜, 수정 날짜 컬럼을 자동화하기 위해 BaseEntity를 생성한 후 Board entity에 상속받았다.
1. @EnableJpaAuditing
Application.java
@EnableJpaAuditing
@SpringBootApplication
public class SpringStudyApplication {
public static void main(String[] args) {
SpringApplication.run(SpringStudyApplication.class, args);
}
}
JPA Audit 기능을 사용하기 위해 어노테이션 추가
2. BaseEntity 클래스 생성
entity
@Getter
@MappedSuperclass
@EntityListeners({AuditingEntityListener.class})
public class BaseEntity {
@CreatedDate
@Column(updatable = false, name="created_at")
private LocalDateTime createdAt;
@LastModifiedDate
@Column(name="last_modified_at")
private LocalDateTime lastModifiedAt;
}
3. Entity class에서 상속받기
entity > entityName > entityName.java
@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class BoardMinj extends BaseEntity {
...
}
4. 필드 확인
1. 프로젝트를 실행시켜 해당 디비의 테이블에서 컬럼 확인이 가능하다.
2. SQL Preview를 통해서도 컬럼을 확인할 수 있다.
참고 자료
JPA Auddit - https://velog.io/@aidenshin/엔티티-작성-JPA-Auddit-적용
즉시 로딩과 지연 로딩 참고 - https://ict-nroo.tistory.com/132
@NoArgsConstructor(access = AccessLevel.PROTECTED) - https://erjuer.tistory.com/106
반응형
'Study > Spring' 카테고리의 다른 글
User 엔티티를 외래키로 가진 Post 엔티티 조회하기 | Spring Spring boot JPA Study (0) | 2022.02.16 |
---|---|
User 엔티티를 외래키로 가진 Post 엔티티 추가하기(INSERT) | Spring Spring boot JPA Study (0) | 2022.02.16 |
Controller 통합 테스트 코드 | Spring Spring boot JPA Study (0) | 2022.02.12 |
[Spring | test | H2] test에서 H2 DB 연결하기 (0) | 2022.02.12 |
[Spring boot | MySQL] Intellij에 MySQL 연결하기 | 모든 프로젝트에서 연결된 디비 연결하기 (0) | 2022.02.11 |
댓글