코딩공작소

ToDo 관리 (연습용) -- (1) 본문

어플리케이션개발/토이프로젝트(취미)

ToDo 관리 (연습용) -- (1)

안잡아모찌 2024. 10. 9. 20:37

요구사항 정의서 

  • 일 별로 투두 리스트 관리
  • 각 건에 대하여 등록/수정/삭제 기능
  • 각 건에 대하여 완료 처리 기능
  • 일주일 치를 화면에 노출하여 관리
  • 미완료 건은 자동으로 명일 이전

 

 


1)

기본적으로 Entity를 잡고 그에 대한 Repository -> Service를 개발한 후,
해당 Entity에 대한 CRUD 기능을 기초적으로 실습해보기로 했다.

 

 

당연하게도 기본적으로 Todo라는 엔티티가 있어야 한다.

기본적으로 엔티티, 테이블을 설정해줬다.
그리고 게터, 세터를 자동적으로 어노테이션을 통해 설정해줬는데, 이렇게 하기위해서는 롬복이 필요했다.

 

그리고 새롭게 알게된 것 중 하나가 CreatedDate, LastModifiedDate라는 어노테이션을 붙이게 되면 자동으로 생성 및 수정시기에 날짜 데이터를 삽입해준다는 것이다.
그리고 이 기능을 활성화 하기 위해 @EntityListners(AuditingEntityListener.class) 어노테이션이 필요하다.
추가적으로,

스프링부트 애플리케이션 단에 @EnableJpaAuditing 어노테이션도 필요하다

 

 

그 후에는 Repository를 생성해준다

@RequiredArgsConstructor를 사용해주려면 private final을 통해 자동주입을 해줘야 한다
그리고 레포지토리에서 이제 CRUD의 기본 기능들을 사용해 준다.
직접 실습해보니 익숙치 않다 보니 기본적인 함수를 혼자짜기도 어색어색,,,

 

 

그리고 나서 서비스 단을 개발해준다.

트랜잭션 처리를 기본적으로 해주고 레포지토리를 주입해준 후, 로직을 구현해준다.
그와중 2중 트랜잭션에 대한 궁금증

정리

  • 클래스 수준의 @Transactional(readOnly = true): 모든 메서드가 기본적으로 읽기 전용 트랜잭션에서 실행되도록 설정하여 성능을 최적화합니다.
  • 메서드 수준의 @Transactional: 개별 메서드에서 데이터 변경 작업이 필요한 경우, 읽기 전용 트랜잭션 설정을 덮어쓰고, 쓰기 트랜잭션을 적용합니다.

 

이렇게 서비스 단까지 구현하고 나면 이제, 컨트롤러 단에서 서비스를 사용하여 엔티티가 잘 저장되는지 확인해보는 단계!

일단 연습용으로 컨트롤러를 만들어준 후, 전체 목록을 조회하게 되면 하나의 엔티티를 삽입하고 전체 목록을 조회하는 부분을 만들어봤다.

 

결과

이렇게 해당 엔티티가 잘 저장되는 것을 알 수 있다.

 

여기까지, 기본적으로 저장하고 조회하는 단계를 만들었고 이제 본격적으로 CRUD에 이어서 화면단을 만들고 Todo엔티티들을 삽입/수정/삭제하고 완료처리 기능을 사용하여 일정표를 관리하는 기본 시스템을 만들어보자