πŸŒ±Β νšŒμ› 도메인 개발

κ΅¬ν˜„ κΈ°λŠ₯

μˆœμ„œ

νšŒμ› 리포지토리 개발

νšŒμ› 리포지토리 μ½”λ“œ : main/repository/MemberRepository.java

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jpabook.jpashop.domain.Member;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class MemberRepository {

    @PersistenceContext // EntityManagerλ₯Ό μ£Όμž… ν•΄μ€Œ
    private EntityManager em;

    public void save(Member member) {
        em.persist(member); // μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ— 객체λ₯Ό λ„£μŒ, λ‚˜μ€‘μ— νŠΈλžœμž­μ…˜μ΄ 컀밋될 λ•Œ DB에 반영
    }

    public Member findOne(Long id) {
        return em.find(Member.class, id); // (νƒ€μž…, PK)
    }

    public List<Member> findAll() {
        return em.createQuery("select m from Member m", Member.class).getResultList(); // JPQL μ‚¬μš©, from의 λŒ€μƒμ΄ ν…Œμ΄λΈ”μ΄ μ•„λ‹Œ μ—”ν‹°ν‹°
    }

    public List<Member> findByName(String name) {
        return em.createQuery("select m from Member m where m.name = :name", Member.class)
                .setParameter("name", name) // νŒŒλΌλ―Έν„° 바인딩
                .getResultList();
    }
}

기술 μ„€λͺ