티스토리 뷰
Auditing이란?
Audit은 사전적 의미로 감사하다, 심사하다 등의 의미를 가지고 있습니다. DB에 레코드가 I/O되는 것을 추적 하기 위해 created_at, updated_at, deleted_at, updated_by, created_by, deleted_by 등의 컬럼을 테이블마다 만들게 됩니다.
테이블마다 만든다는 것은 JPA관점에서는 Entity클래스 마다 만든다는 것입니다. Auditing 역할을 하는 Field가 중복되는 문제가 있습니다.
Spring Data JPA에서는 Auditing이라는 기능을 제공합니다. Auditing하는 컬럼만 묶어놓은 클래스를 extends함으로써 엔티티마다 중복되는 것을 상속으로 처리할 수 있게 해줍니다.
EnableJpaAuditing 어노테이션을 붙여서 Audit기능을 쓰겠다고 선언 합니다.
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig {
}
BaseEntity를 만듭니다. 이 Entity를 extends하면 Audit이 적용 됩니다.
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@ToString
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
// 조회한 Entity 값을 변경할 때 시간이 자동 저장됩니다.
@LastModifiedDate
private LocalDateTime modifiedDate;
}
아래와 같이 해당 Entity에 extends해주면 됩니다.
@ToString, @EqualsAndHashCode 어노테이션을 꼭 붙여주셔야 합니다.
@Builder
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class Visit extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "hospital_id")
private Hospital hospital;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
private String disease;
private float amount;
public VisitResponse toResponse() {
return VisitResponse.builder()
.hospitalName(this.hospital.getHospitalName())
.userName(this.user.getUserName())
.disease(this.disease)
.amount(this.amount)
.build();
}
}
728x90
'Spring > Spring Boot(스프링 부트)' 카테고리의 다른 글
@WebMvcTest로 Controller테스트 하기 (0) | 2022.12.28 |
---|---|
Swagger에서 Jwt Token으로 테스트 하기 (0) | 2022.12.21 |
SpringBoot Gradle빌드, Dockerbuild후 gitlab-ci (0) | 2022.12.13 |
SpringBoot 2.7.5 WebMvcTest 작성할때 유의할 점 (1) | 2022.12.10 |
Spring Security User정보 받아오기 (3) | 2022.11.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 도커티슈케이스
- docker container case
- 도커각티슈케이스
- 개발자
- docker container whale
- 싱가폴
- docker container tissue
- Linux
- shellscript
- 2017 티스토리 결산
- Sh
- docker container
- docker container tissue box
- 도커각티슈박스
- 이직
- 도커컨테이너
- 도커티슈박스
- vim
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함