JPA를 사용하여 Data를 이용하려면 Entity와 JpaRepository 에 대해서 알아야한다.
JPA에서는 entity를 토대로 데이터를 생성하고 처리 및 가공을 한다. 그리고 하나의 객체가 되기도 한다.
또 entity는 데이터베이스의 테이블을 뜻한다.
entity 패키지 안에 book.java entity 를 하나 만들고 다음처럼 채워보도록 한다.
- entity 생성
package com.test.test.entity;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.*;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity(name="book")
public class Book {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="book_id")
private Long bookId;
@Column(nullable=false, length=200)
private String title;
@Column(nullable=false, length=200)
private Integer category;
@Column(nullable=true)
private String price;
@Column(nullable=false, name="insert_date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
private LocalDateTime insertDate;
}
어노테이션과 롬복에 대해서 궁금하다면 아래 포스팅을 참고하자.
먼저 롬복을 사용하기 위한 어노테이션 들이 있고
@Entity 뒤에 name은 실제 테이블 명이다.
각 컬럼에서 처음에 @Id는 구별,식별자를 정하는것이고 generatedValue 로 identity 를 표기해준다.
이어서 @Column의 name 역시 컬럼 명을 나타낸다.
bookId나 insertDate는 변수명이고 실제 매칭은 name 뒤에 명시된 book_id, insert_date로 하라고 표시를 해주는것이다.
그리고 각 컬럼에 nullable을 표시해주고 length도 표기해주었다.
date 형식에서는 format 형식을 맞추기 위해서 jsinformat 어노테이션도 사용이 되었다.
길어보이지만 lombok을 썼으니 이정도이다.
다음은 Repository 설정을 해준다.
repo 패키지 안에 BookRepository 라고 인터페이스 파일을 만든후 채워보도록 한다.(클래스 아님)
- repository interface 생성
package com.test.test.repo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.test.test.entity.Book;
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}
repository라는 것을 명시하기 위해서 annotation을 사용하였고,
JpaRepository를 상속 받은 후 entity에 지정했던 해당 repository에서 사용할 entity와 그 entity의 key값 자료형을 적어준다.
book entity의 key 값은 좀전에 id의 annotation이 설정이 된 bookid이고 그에 대한 자료형은 Long였기에 이렇게 작성을 하였다.
여기까지 했다면 준비가 끝났다.
다음 포스팅에 이어서 작성을 해보도록 하겠다.
참고 사이트
https://thenicesj.tistory.com/52
'IT > Java' 카테고리의 다른 글
SpringBoot/JPA part.8 (5) | 2022.02.06 |
---|---|
SpringBoot/JPA part.7 (21) | 2022.02.05 |
SpringBoot/JPA part.5 (9) | 2022.02.03 |
SpringBoot/JPA part.4 (6) | 2022.02.02 |
SpringBoot/JPA part.3 (0) | 2022.02.02 |
댓글