implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
위 설정으로 JPA가 던지는 쿼리를 볼 수 있게 된다.
또 ddl-auto=none 설정으로 JPA가 자동으로 테이블을 생성하는 기능을 OFF 한다.
기존 도메인에 있는 객체를 Entity로 인식하게 하기 위해
어노테이션을 작성한다.
@Entity
이 또한 어노테이션으로 설정한다.
@Transactional
public class JpaMemberRepository implements MemberRepository {
    private final EntityManager em;
    //DI 됨 (build.gradle)
    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();
    }
}
훨씬 간단해졌다.
JPA는 EntityManager를 DI 받는다.
EntityManager는