본문 바로가기

[스프링부트/업무일지 만들기] 업무 일지에 적을 내용을 담을 모델(엔티티)만들기

ironwhale 2024. 6. 1.

 이제 우리가 업무일지에 작성한 내용을 담을 그릇이 필요합니다. 이것을 사실 엔티티, 도메인, 모델 이런식으로 표현하는 것으로 보이지만 각각이 부르는 이름에 따른 차이점이 있을 것입니다. 하지만 결국에는 DB에 저장된 데이터를 OOP의 세계로 가져와 담기 위한 그릇이라고 저는 이해했습니다. 이것에 대해 정통하게 공부한 입장이 아니다 보니 이런 개념적인 부분은 틀릴 수 있으니 양해 바랍니다. 


엔티티 만들기

업무일지에 저장할 내용

  • id: 보통 pk로 불리우는 자동으로 1부터 생성되는 값입니다. 
  • log: 제가 작성한 오늘 업무 일지가 저장되는 곳입니다. 
  • userName: 이 업무 일지를 작성한 사람이 저장되는 곳입니다. 
  • createAt, updateAt: 업무일지를 작성한 시점, 수정한 시점을 저장하는 곳입니다. 

애너테이션 설정

  • @Entity: 이걸 붙이면 JPA에서 DB와 클래스를 연결해주게 됩니다. 
  • @Getter: 롬복에서 getter를 생성해주는 애너테이션 입니다. 
  • @NoArgsConstructor: 기본 생성자를 자동 생성하는 애너테이션 입니다. 
  • @EntityListeners, @CreatedDate,@LastModifiedDate: 자동으로 수정한 일시와 저장한 일시를 저장할수 있게 해줍니다. 
    • main 함수가 있는 스프링 기본 클래스에 @EnableJpaAuditing을 붙여야 잘 작동됩니다. 
@EnableJpaAuditing
@SpringBootApplication
public class WorkLogApplication {

    public static void main(String[] args) {
        SpringApplication.run(WorkLogApplication.class, args);
    }

}

전체 코드

update 메소드는 나중에 데이터 수정시 사용할 메소드 입니다.

@Entity
@Getter
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
public class WorkLog {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "log")
    private String log;

    private String userName;


    @CreatedDate
    private LocalDateTime createAt;
    @LastModifiedDate
    private LocalDateTime updateAt;


    @Convert(converter = StringListConvert.class)
    private List<String> tags;

    @Builder
    public WorkLog(String log, String userName, List<String> tags, 
    				LocalDateTime createAt, LocalDateTime updateAt) {
        this.log = log;
        this.createAt = createAt;
        this.updateAt = updateAt;
        this.userName = userName;
        this.tags = tags;
    }

    public void update(String log,List<String> tags) {
        this.log = log;
        this.tags = tags;
    }

}

 

 


 

다음은 스프링 Data JPA를 이용해 DB 데이터에 접근하는 레포지토리와 실제 서비스 로직을 구현하는 서비스클래스를 만들어보겠습니다. 

댓글