JPA

장서연·2022년 1월 12일
0

스프링 입문

목록 보기
22/25
  • JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL 도 JPA 가 직접 만들어서 실행해준다
  • JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다.
  • JPA를 사용하면 개발 생산성을 크게 높일 수 있다

JPA는 인터페이스고, 구현체로는 여러가지가 있는데, 그 중 Hibernate 를 쓰겠다.
JPA는 자바 진영의 표준 인터페이스이고, 구현은 여러 벤더들이 하는 구조!

애노테이션들을 가지고, 데이터베이스와 매핑한다.


repository/JpaMemberRepository.java

JPA는 EntityManager라는 것으로 모든 것이 동작을 한다.

아까 build.gradle 에서 data-jpa라이브러리를 다운받았잖아? 그러면 스프링 부트가 자동으로 EntityManager 를 생성해준다. 그래서 우리는 이 만들어진 것을 인젝션 받으면 된다.
repository/JpaMemberRepository.java

public class JpaMemberRepository implements MemberRepository{

    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) {
        Member member = em.find(Member.class, id);
        return Optional.ofNullable(member);
    }

    @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();
    }

    @Override
    public List<Member> findAll() {
        // 객체를 대상으로 쿼리를 날릴 수 있음
        return em.createQuery("select m from Member m", Member.class).getResultList();

    }
}

0개의 댓글