반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 객체리터럴
- 이벤트리스너
- 자바스크립트함수
- Blazor
- 인프런
- sort
- 고차함수
- slice
- 인프런무료강좌
- .NET
- 자바스크립트객체리터럴
- 코딩
- 자바스크립트틱택토
- 콜백함수
- 자바스크립트
- 인프런강좌
- 자바스크립트파라미터
- 틱택토구현
- 자바스크립트recude
- 비주얼스튜디오
- 인프런인강
- 인프런자바스크립트
- 객체의비교
- NPM
- 인터넷프로토콜
- HTTP
- 제로초
- 인프런강의
- c#
- EntityFramework
Archives
- Today
- Total
샐님은 개발중
#7. Auditing 엔티티 공통 속성 공통화 본문
728x90
반응형
Auditing : Spring Data Jpa 가 제공하며 엔티티가 저장 또는 수정될 때 자동으로 등록일, 수정일, 등록자, 수정자를 입력해줍니다.
1. AuditorAware 인터페이스를 구현한 클래스를 생성합니다.
package won.shop.config;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import java.util.Optional;
public class AuditorAwareImpl implements org.springframework.data.domain.AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
Authentication authentication =
SecurityContextHolder.getContext().getAuthentication();
String userId = "";
if(authentication != null){
userId = authentication.getName();
}
return Optional.of(userId);
}
}
2. Auditor 기능을 사용하기 위해 Config 파일 생성합니다.
package won.shop.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class AuditConfig {
@Bean
public AuditorAware<String> auditorProvider(){
return new AuditorAwareImpl();
}
}
3. BaseTimeEntity 를 생성해 등록,수정 시간용 도메인 생성
package won.shop.domain;
import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.time.LocalDateTime;
@EntityListeners(value = {AuditingEntityListener.class})
@MappedSuperclass
@Getter
@Setter
public abstract class BaseTimeEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime regTime;
@LastModifiedDate
private LocalDateTime updateTime;
}
4. BaseEntitiy 생성, BaseTimeEntity를 상속받아 등록, 수정시간 과 등록,수정한 사람용 도메인생성
package won.shop.domain;
import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.time.LocalDateTime;
@EntityListeners(value = {AuditingEntityListener.class})
@MappedSuperclass
@Getter
public abstract class BaseEntity extends BaseTimeEntity{
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String modifiedBy;
}
5. Member, Cart 등 기존 도메인에 상속시켜줍니다.
@Entity
@Getter
@Setter
public class Member extends BaseEntity {
,,,
}
728x90
반응형
'포토폴리오 > Spring-Boot,JPA - 쇼핑몰사이트 v2' 카테고리의 다른 글
#6. 고아 객체 제거 와 지연 로딩 (0) | 2023.08.04 |
---|---|
#5. 영속성 전이 (0) | 2023.08.04 |
#4. 연관 관계 매핑 (0) | 2023.08.04 |
#3. 스프링 시큐리티를 활용한 로그인/회원가입 (2) (0) | 2023.08.03 |
#2. 스프링 시큐리티를 활용한 로그인/회원가입 (1) (0) | 2023.08.03 |