Spring Framework

타임라인서비스) Repository 만들기

na_o 2021. 7. 21. 17:55
728x90
/*Memo.java*/

package com.sparta.week03.domain;

...

@NoArgsConstructor // 기본생성자를 만듭니다.
@Getter
@Entity // 테이블과 연계됨을 스프링에게 알려줍니다.
public class Memo extends Timestamped { // 생성,수정 시간을 자동으로 만들어줍니다.
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long id; //아이디

    @Column(nullable = false)
    private String username; //사용자이름

    @Column(nullable = false)
    private String contents; //내용

    public Memo(String username, String contents) {
        this.username = username;
        this.contents = contents;
    }

    public Memo(MemoRequestDto requestDto) {
        this.username = requestDto.getUsername();
        this.contents = requestDto.getContents();
    }
}
/*Timestamped.java*/

package com.sparta.week03.domain;

...

@MappedSuperclass // Entity가 자동으로 컬럼으로 인식합니다.
                  // 이 클래스를 상속받은 클래스에서 생성/수정시간 컬럼을 자동으로 잡도록 함
@EntityListeners(AuditingEntityListener.class) // 생성/변경 시간을 자동으로 업데이트합니다.
public abstract class Timestamped {
//abstract: 상속이 되어야만 new를 할 수 있음
    @CreatedDate
    private LocalDateTime createdAt; //생성일

    @LastModifiedDate
    private LocalDateTime modifiedAt; //수정일
}

 

- JPA 공식 홈페이지

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

JPA 홈페이지에 사용방법 설명되어있음

/*MemoRepository.java*/

package com.sparta.week03.domain;

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

//extends JpaRepository<Memo, Long>:
// JPARepository 기능을 가져다가 쓸거다
// Memo 클래스, Long인 아이디를 가져다쓸거다
public interface MemoRepository extends JpaRepository<Memo, Long> {
    //findAllByOrderByModifiedAtDesc():
    // find All By OrderBy ModifiedAt Desc
    // 데이터를 모두 조회하는데 역순으로 ModifiedAt 컬럼을 정렬해라
    List<Memo> findAllByOrderByModifiedAtDesc(); 
}
/*MemoRequestDto.java*/

package com.sparta.week03.domain;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

@Getter
public class MemoRequestDto {
    private String username;
    private String contents;
}

 

'Spring Framework' 카테고리의 다른 글

타임라인서비스) Controller 만들기  (0) 2021.07.21
타임라인서비스) Service 만들기  (0) 2021.07.21
API - POST, PUT, DELETE  (0) 2021.07.21
API-GET  (0) 2021.07.18
Lombok, DTO  (0) 2021.07.18