회원 리포지토리 개발@Repositorypublic class MemberRepository { @PersistenceContext private EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } public List findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } publ..
JPA

도메인 모델과 테이블 설계참고: 테이블명이 `ORDER` 가 아니라 `ORDERS` 인 것은 데이터베이스가 `order by` 때문에 예약어로 잡고 있는 경우가 많다. 그래서 관례상 `ORDERS` 를 많이 사용한다.참고: 실제 코드에서는 DB에 소문자 + _(언더스코어) 스타일을 사용데이터베이스 테이블명, 컬럼명에 대한 관례는 회사마다 다르다.보통은 대문자 + _(언더스코어)나 소문자 + _(언 더스코어) 방식 중에 하나를 지정해서 일관성 있게 사용한다.연관관계 매핑 분석 참고: 외래 키가 있는 곳을 연관관계의 주인으로 정해라.연관관계의 주인은 단순히 외래 키를 누가 관리하냐의 문제이지 비즈니스상 우위에 있다고 주인으로 정하면 안 된다.예를 들어서 자동차와 바퀴가 있으면, 일대다 관계에서 항상 다쪽에 ..
H2 데이터베이스 설치개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공https://www.h2database.com다운로드 및 설치스프링 부트 2.x를 사용하면 1.4.200 버전을 다운로드 받으면 된다.스프링 부트 3.x를 사용하면 2.1.214 버전 이상 사용해야 한다.데이터베이스 파일 생성 방법jdbc:h2:~/jpashop (최소 한번)~/jpashop.mv.db 파일 생성 확인이후 부터는 jdbc:h2:tcp://localhost/~/jpashop 이렇게 접속주의: H2 데이터베이스의 MVCC 옵션은 H2 1.4.198 버전부터 제거되었다. 최신 버전에서는 MVCC 옵션을 사용하면 오류가 발생한다.JPA와 DB 설정spring: datasource: url: jdbc:h2:tc..

JPQL - 경로 표현식경로 표현식이란 .(점)을 찍어 객체 그래프를 탐색하는 것이다.select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드 join m.orders o -> 컬렉션 값 연관 필드where t.name = '팀A'상태 필드로 가냐 단일값 연관필드로 가냐 컬렉션값 연관필드로 가냐에 따라서 내부적으로 동작하는 방식이 달라 결과가 달라진다. 그래서 이 세 가지를 꼭 구분해서 이해를 해야 된다.경로 표현식 용어 정리상태 필드(state field): 단순히 값을 저장하기 위한 필드(ex: m.username)연관 필드(association field): 연관관계를 나타내기 위한 필드연관 필드는 두 가지로 나눠진다..