-
[JPA] JPA 사용하기JAVA/Spring(Springboot) 2021. 7. 11. 16:45728x90
JPA를 사용하면 DB쿼리를 작성하지 않아도 DB작업이 가능하다
JPA를 사용하기 위한 작업을 알아보자
1. build.gradle의 dependencies에 아래 코드를 추가한다
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' }
2. application.properties에 아래 코드를 추가한다
// jpa로 작성된 sql을 보여준다 spring.jpa.show-sql=true // DB에 table이 이미 생성되어 있기 때문에 ddl-auto는 꺼준다 spring.jpa.hibernate.ddl-auto=none
3. Repository에서 사용하면 된다
package hello.hellospring.repository; import hello.hellospring.domain.Member; import javax.persistence.EntityManager; import java.util.List; import java.util.Optional; public class JpaMemberRepository implements MemberRepository{ // 스프링부트가 EntityManager를 생성해준다 private final EntityManager em; public JpaMemberRepository(EntityManager em) { this.em = em; } @Override public Member save(Member member) { em.persist(member); return member; } @Override public Optional<Member> findById(Long id) { // pk인 경우는 바로 find가 가능하다 Member member = em.find(Member.class, id); return Optional.ofNullable(member); } @Override public Optional<Member> findByName(String name) { // pk가 아닌 경우는 createQuery 과정이 필요하다 List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name).getResultList(); return result.stream().findAny(); } @Override public List<Member> findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } }
4. StringConfig에서 EntityManager를 생성하고 Service에 적용한다
package hello.hellospring; import hello.hellospring.repository.*; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class StringConfig { private EntityManager em; @Autowired public StringConfig(EntityManager em) { this.em = em; } @Bean public MemberService memberService() { return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository() { return new JpaMemberRepository(em); } }
728x90728x90'JAVA > Spring(Springboot)' 카테고리의 다른 글
스프링 컨테이너에 등록된 모든 빈 조회 (0) 2021.07.17 스프링 부트 사용해서 스프링 프로젝트 생성 (0) 2021.07.13 SpringBoot Class 단위 Test 시 초기화 작업 (0) 2021.07.03 Spring boot cmd에서 빌드하고 서버 실행하기 (0) 2021.06.29