Spring Boot 시작하기 #7

ims·2020년 8월 25일

findFirstBy

중복되는 data 값 중에 가장 먼저 해당하는 값을 가져온다. 위와 같이 길게 method 설정을 할 수 있다.

Auditing

Entity에서 위의 네개의 값들이 전부 중복돼서 들어간다. --> 자동화를 하자.

component와 config를 생성한다.

config > JpaConfig

@Configuration // 여기는 설정파일에 관한 것이 들어간다
@EnableJpaAuditing // Jpa 감시를 활성화 시키겠다
public class JpaConfig {
}

component > LoginUserAuditorAware

@Component
public class LoginUserAuditorAware implements AuditorAware<String> {
    @Override
    public Optional<String> getCurrentAuditor() {
        return Optional.of("AdminServer");
    }
}

AuditorAware을 생성하면 implements를 하라고 뜬다.

EntityListeners

@EntityListeners(AuditingEntityListener.class)

Entity와 Auditing을 연결해주기 위해 Entity class에 위와 같이 annotation을 달아준다.

    @CreatedDate
    private LocalDateTime createdAt;

    @CreatedBy
    private String createdBy;

    @LastModifiedDate
    private LocalDateTime updatedAt;

    @LastModifiedBy
    private String updatedBy;

중복되는 4개의 data에 대해서 annotation을 달아주었다.

User Test

    @Test
   public void create(){
       User user = new User();

       user.setAccount("Auditing");

       User newUser = userRepository.save(user);
   }

setAccount만 설정해주었다.

그러나 DB에는 4개의 요소가 전부 자동적으로 들어간 것을 확인할 수 있다.

Builder & Chainning ( Chain Pattern )

Builder

생성자를 만들 때 생성자가 매개변수의 개수에 따라서 여러 개를 생성하지 않아도 되게 하고, 생성자를 선언할 때 . 형태로 이어서 만들어줄 수 있게 하는 메소드

User userUsingBuilder = User.builder().account("임얼쑤").email("구글").build();

userRepository.save(userUsingBuilder);

User Entity에 @Builder를 추가하면 위와 같이 생성자를 간편하게 생성할 수 있다.

Chain pattern

Builder 패턴과 비슷하게 set에 대해서 연속적으로 걸어줄 수 있게 해주는 메소드

@Accessors(chain = true)

Entity에 chain pattern을 true로 걸어준다.

User userUsingBuilder = User.builder().account("임얼쑤").email("구글").build();

userRepository.save(userUsingBuilder);

userUsingBuilder.setAccount("힘").setPhoneNumber("01040431336");

userRepository.save(userUsingBuilder);
profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글