간단한 자료 저장, 조회
스프링 부트와 JPA를 이용하여 간단하게 자료를 저장하고, 조회해보자.
build.gradle에 관련 의존성이 implementation 되어있는 상황에서 시작한다.
Book Bean
package jpabook.jpashop;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter @Setter
public class Book {
@Id @GeneratedValue
private Long bookNum;
private String bookName;
}
@Entity
어노테이션을 통해 해당 Book Bean이 JPA가 관리하는 Entity 임을 선언한다.
Lombok
의 Getter, Setter를 import 하면@Getter @Setter
어노테이션으로 Getter, Setter 코드를 대신할 수 있다.
해당 클래스로 생성되는 자료의 Primary Key 임을 선언하는@Id
어노테이션을 사용했다.
자동으로 증가하며 생성되는@GeneratedValue
을 이용했다.
BookRepository
package jpabook.jpashop;
import org.springframework.stereotype.Repository;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Repository
public class BookRepository {
@PersistenceContext
private EntityManager em;
public Long save(Book book){
em.persist(book);
return book.getBookNum();
}
public Book find(Long num){
return em.find(Book.class,num);
}
}
스프링이 해당 클래스를 인지하고 스프링 빈으로 등록할 수 있도록
@Repository
어노테이션으로 등록했다.
@PersistenceContext
를 이용하여, 엔티티 매니저를 스프링이 주입할 수 있도록 했다.
em.persist(book)
로 자료를 저장한다.
em.find(Book.class,num)
엔티티 매니저의 find 메서드에 Bean Class, Primary Key 값을 넣어주면 해당 키값과 일치하는 객체를 찾을 수 있다.