728x90
JPARepository
- Spring Data JPA에서 제공하는 인터페이스 중 하나
- JPA를 사용하여 데이터베이스를 조작하기 위한 메서드들을 제공
- JPARepository 인터페이스를 상속받는 인터페이스를 정의하면, 해당 인터페이스를 구현하는 클래스는 JPA에서 제공하는 메서드들을 사용할 수 있음
- 데이터베이스의 추가, 조회, 수정, 삭제의 findAll(), findById(), save() 등의 메서드들이 기본 제공
- JPARepository 인터페이스는 제네릭 타입을 사용하여 Entity클래스와 복합키를 사용하고 있다면 해당 Entity의 ID클래스를 명시함
--> 이를 통해 해당 인터페이스를 상속받는 구현체는 Entity클래스와 ID클래스에 대한 정보를 알고 있어서, 런타임 시점에 적절한 쿼리를 생성하고 실행할 수 있음
기본 제공
findById(ID id): ID에 해당하는 엔터티를 찾아 반환(PK)
findAll(): 모든 엔터티를 조회하여 리스트로 반환
save(S entity): 엔터티를 저장하거나 업데이트
deleteById(ID id): ID에 해당하는 엔터티를 삭제
existsById(ID id): ID에 해당하는 엔터티가 존재하는지 여부를 확인
count(): 저장된 엔터티의 총 개수를 반환
package com.wiw.whatShouldIWearToday;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.Instant;
@Getter
@Setter
@Entity //JPA가 관리하는 클래스
@Table(name = "membervo") //테이블과 매핑할 테이블은 해당 어노테이션을 붙임
public class MemberVO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ColumnDefault("nextval('users_userid_seq'")
@Column(name = "userid", nullable = false)
private Integer id;
@Size(max = 50)
@NotNull
@Column(name = "username", nullable = false, length = 50)
private String username;
@Size(max = 100)
@NotNull
@Column(name = "password", nullable = false, length = 100)
private String password;
@Size(max = 100)
@NotNull
@Column(name = "email", nullable = false, length = 100)
@Email
private String email;
@ColumnDefault("CURRENT_TIMESTAMP")
@Column(name = "registerdate")
@DateTimeFormat
private Instant registerdate;
}
- 기본적으로 다 맞춰주지만 필요한 어노테이션은 추가로 설정
'개인프로젝트 > 기능프로그램_오늘뭐입지' 카테고리의 다른 글
20240508_React 설정(멀티모듈, Intellij) (0) | 2024.05.08 |
---|---|
20240507_jsp 설정&외부파일 설정 (0) | 2024.05.08 |
20240505_PostgreSQL 사용하기(지속 업데이트) (0) | 2024.05.05 |
20240505_멀티 모듈 (0) | 2024.05.05 |
20240504_개인프로젝트_구상 (0) | 2024.05.04 |