Spring 없이 JPA를 설정하여 프로젝트를 실습해볼 것이다.
내부적으로 어떻게 돌아가는지 안 후에 spring을 사용하면 자동적으로 처리되는 것에 대한 이해가 더 커질 것이기에 진행하였다.
Hibernate ORM 버전은 스프링에서 맞는 버전 찾기
spring → projects → spring boot에서 dependencies 확인
현재 hibernate가 5.6.11로 다운 받으면 됨
다운받은 h2와 같은 버전으로 dependencies 설정하기
데이터베이스 방언 중요!
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
JPA 구동 방식
회원 조회
Member findMember = em.find(Member.class, 1L);
System.out.println("findMember.Id() = " + findMember.getId());
System.out.println("findMember.Name() = " + findMember.getName());
회원 삭제
Member findMember = em.find(Member.class, 1L);
em.remove(findMember);
회원 수정
Member findMember = em.find(Member.class, 1L);
findMember.setName("HelloJPA");
-> 수정된거 볼 수 있음
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.getResultList();
for (Member member : result) {
System.out.println("member.getName() = " + member.getName());
결과
[페이지 네이션 하기]
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(8);
.getResultList();
→ 5번쨰부터 8번쨰까지 가져옴
→ DB에 맞게 변형해줌
JPQL 정리
- JPQL → 객체 지향 SQL
- JPA 사용하면 엔티티 객체 중심으로 개발하게됨
- 검색 쿼리를 위해 JPQL을 사용
필요한 데이터만 DB에서 불러오려면 검색 조건이 포함된 SQL이 필요함- JPQL → 엔티티 객체 대상으로 쿼리
SQL → 데이터베이스 테이블을 대상으로 쿼리- 테이블 아닌 객체 대상으로 검색하는 객체 지향 쿼리
- 특정 데이터베이스 SQL에 의존X
[인프런 강의 : 자바 ORM 표준 JPA 프로그래밍 참고]