인프런 Spring 강의 정리/자바 ORM 표준 JPA 프로그래밍 - 기본편
📌 JPQL - 경로 표현식 ⚡ 경로 표현식 .(점)을 찍어 객체 그래프를 탐색 ✔ 경로 표현식 용어 정리 상태 필드(state field) : 단순히 값을 저장하기 위한 필드 ex) m.username 연관 필드(association field) : 연관 관계를 위한 필드 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티(ex. m.team) 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션(ex. m.orders) ✔ 경로 표현식 특징 상태 필드(state field) : 경로 탐색의 끝, 탐색 X 단일 값 연관 경로 : 묵시적 내부 조인(inner join) 발생, 탐색 O 컬렉션 값 연관 경로 : 묵시적 내부 조인 발생, 탐색 X FR..
📌 객체지향 쿼리 언어 소개 ⚡ JPA는 다양한 쿼리 방법을 지원 JPQL JPQ Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 📌 JPQL ⚡ JPQL 소개 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색(a.getB().getC()) 나이가 18살 이상인 회원을 모두 검색하고 싶다면? ⚡ JPQL JPA를 사용하면 엔티티 객체를 중심으로 개발 문제는 검색 쿼리 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요 JPA는 SQL을 ..
📌 JPA의 데이터 타입 분류 ⚡ 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 기능 식별자가 있음 식별자로 구별하고 지속 추적 가능 공유 가능 참조 값 공유할 수 있음 -> 공유 참조 ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 ⚡ 값 타입 int, integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이니 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 ✔ 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String ✔ 임베디드 타입(embedded type, 복합 값 타입) ✔ 컬렉션 값 타입(col..
📌 프록시 ⚡ Member를 조회할 때 Team도 함께 조회해야 할까? ✔ 회원과 팀 함께 출력 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName()); } ✔ 회원만 출력 public void printUser(String memberId) { Member member = em.find(Member.class, memberId); Team team = memb..