User Entity의 경우 User Data가 들어있기 때문에 중요도가 높다.
수정된 내역의 History를 만들어 보도록 하겠다.
User History라는 Entity를 추가적으로 만들어 보도록 하겠습니다.
User History
@Entity
@NoArgsConstructor
@Data
public class UserHistory {
@Id
@GeneratedValue
private Long id;
private Long userId;
private String name;
private String email;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
UserEntityListener (class)
@Component //Spring에 Bean으로 등록하기 위해 선언
public class UserEntityListener {
@AutoWired
private final UserHistoryRepository userHistroyRepository;
@PreUpdate
public void preUpdate(Object o){
User user = (User) o ;
UserHistory userHistory = new UserHistory();
userHistory.setUserId(user.getId());
userHistory.setName(user.getName());
userHistory.setEmail(User.getEmail());
userHistoryRepository.save(userHistory);
}
UserHistoryRepository (interface)
public interface UserInterfaceRepository extends JpaRepository<UserHistory, Long>{
}
UserRepositoryTest
@Test
void userHistoryTest(){
User user = new User();
user.setEmail("martin-new@fastcampus.com");
user.setName("martin");
userRepository.save(user);
user.setName("martin-new-new");
userRepository.save(user);
userHistory.findAll().forEach(System.out::println);
}
}
추가기능에 대한 설명
@EnableJpaAuditing
: Jpa에서 기본적으로 제공해주는 Listener 어노테이션
사용시에는 DTO에 필수적으로 @EntityListeners(value = AuditionEntityListener.class) 선언
Auditing으로 각 데이터에 지정해준다
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
이렇게 한다면 자동으로 값이 부여된다.
`MappedSuperClass'
: 해당 클래스의 필드를 상속받는 Entity의 컬럼으로 포함시켜준다.
: Entity
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.