본문 바로가기
내마음대로만들어보자/JAVA & Spring

타임라인 프로젝트 만들기 - Repository

by 소농민! 2021. 6. 25.
728x90

1. Memo 클래스 만들기

    ※ 메모는 1) 익명의 작성자 이름(username), 2) 메모 내용(contents) 으로 이루어져 있다.

 

→ domain 패키지 생성

   ① Memo.java

※ Lombok 자주사용되는 기능

    1. @Getter / @Setter 를 붙인다면 Lombok 이 해당 필드에 대한 기본 Getter / Setter 를 생성해준다.

        Private 생성된 정보를 조회하고 가져올때 필수로 사용해야될 기능이다.

    2. @NoArgsConstructor 는 파라미터가 없는 기본생성자를 만들어준다. (여러 생성자가 만들어지는것을 방지하기위함??)

    3.  @Entity : 테이블과 연계됨을 스프링에게 알려준다. 

   ② Timestamped.java 

※ 주요기능 

    1. @MappedSuperclass : Timestamped 클래스를 상속하는 친구가 자동으로 생성시간,수정시간을 컬럼으로 인식

    2. @EntityListeners : memo class가 변화하는걸 듣고있다. 지켜보고있다 라는 의미 

    3. AuditingEntityListener : 변화가 일어났다. 변화가 일어나면 자동으로 업데이트 해주겠다라는 의미 

    4. CreateDate / LastModifieDate : 생성시간 / 수정시간 

         LocalDateTime 은 시간을 나타내는 자료형

    5. abstract 내용 추가 필요! 

        ex) public abstract classs Timestamped { ....

        추상클래스이며, New Timestamped 처럼 글자를 못쓰기때문에 다른데서 상속이 되어야만 사용할 수 있으므로 추상클래스 내용이 

        추가되어야한다.

   ③ MemoRepository.java

※ 해석 

   MemoRepository 가  JpaRepository 를 미리 작성된 코드들(findall, delete, save, findbyId)  가져다쓸꺼다(=extends)

   가져다 쓸 대상은 <Memo, Long> (= Memo라는 클래스이고 아이디는 Long 인 녀석)

  findAllByOrderByModifiedAtDesc() : 다 찾아라(findAll) 정렬해줘(ByOrderBy) 수정날짜기준(ModifiedAt) 내림차순 (desc)

                                                                  모두 찾아서 수정된날짜 기준으로 내림차순으로 정렬해줘 라는 뜻이다

  * 공식홈페이지 참조!!!

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del

docs.spring.io

   ④ MemorequestDto.java

필요한 정보를 물고다니는 녀석!!!

그렇다면 이번 프로젝트에서는 수정요청이 오면은 누가 수정을했고 수정내용이 뭔지 알아야한다.