반응형
    
    
    
  ✔ 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.java1. 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 | 

 
										
									 
										
									 
										
									 
										
									
댓글