의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
application.properties
spring.jpa.show.sql=true
spring.jpa.hibernate.ddl-auto=none
어노테이션 추가
@Entity -> JPA에서 관리할 객체 선언
컬럼 변수
@Id -> 객체의 PrimaryKey 선언
@GeneratedValue(strategy = GenerationType.IDENTITY) -> 기본키 생성을 데이터베이스에 위임
DB가 알아서 Auto_Increment해줌
MySql, PostgreSQL, H2 등에서 사용
EntityManager 변수 생성 후 Repository 생성자에 매개변수로 추가
private final EntityManager em;
public JpaMemberRepository(EntityManager em){
this.em = em;
}
repository join메소드 변경
@Override
public Member save(Member member) {
em.persist(member);
return member;
}
영속성 컨텍스트에 member정보 저장
em.find를 통한 조회
@Override
public Optional<Member> findById(Long id) {
Member member = em.find(Member.class, id);
return Optional.ofNullable(member);
}
em.createQuery를 통한 조회
@Override
public Optional<Member> findByName(String name) {
List<Member> result = em.createQuery("select m from Member m where m.name = :name",
Member.class).setParameter("name",name).getResultList();
return result.stream().findAny();
}