본문 바로가기

spring23

자바 ORM 표준 JPA 프로그래밍 - 12장 스프링 데이터 JPA 스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트다. 이 프로젝트는 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 해결한다. 스프링 데이터 JPA는 스프링 데이터 프로젝트의 하위 프로젝트 중 하나다. 즉 스프링 데이터 JPA 말고도 다른 DB(MONGO DB, REDIS 등등)를 위한 프로젝트가 있다는 뜻이다. 스프링 데이터 JPA 설정 스프링 데이터 JPA를 사용하기 위해선 먼저 의존성 설정을 해줘야 한다. implementation('org.springframework.boot:spring-boot-starter-data-jpa') 공통 인터페이스 기능 스프링 데이터 JPA는 간단한 CRUD 기능을 공통으로 처리하는 JpaReposit.. 2021. 8. 17.
자바 ORM 표준 JPA 프로그래밍 - 10장 객체지향 쿼리 언어 객체지향 쿼리 EntityManager.find() 메소드를 사용하면 식별자로 엔티티 하나를 조회할 수 있다. 하지만 이 기능만으로 애플리케이션을 개발하기는 어렵다. JPQL JPQL은 엔티티 객체를 조회하는 객체지향 쿼리이다. 문법은 SQL과 미슷하고 ANSI 표준 SQL이 제공하는 기능을 유사하게 지원한다. JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다. 그리고 데이터베이스 Dialect만 변경하면 JPQL을 수정하지 않아도 자연스럽게 데이터베이스를 변경할 수 있다. @Test public void test01() { TypedQuery query = em.createQuery("select m from Member m", Member.class); List resultList =.. 2021. 7. 24.
자바 ORM 표준 JPA 프로그래밍 - 9장 값타입 https://github.com/klyhyeon/JPAStudy/blob/main/chapter/09/9%EC%9E%A5_%EA%B0%92%ED%83%80%EC%9E%85.md GitHub - klyhyeon/JPAStudy Contribute to klyhyeon/JPAStudy development by creating an account on GitHub. github.com 링크로 대체 2021. 7. 24.
자바 ORM 표준 JPA 프로그래밍 - 8장 프록시 프록시 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 실제 사용하는 시점에 데이터베이스를 조회할 수 있다. 프록시 기초 JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다. 이 메소드는 영속성 컨텐스트에 엔티티가 없으면 데이터베이스를 조회한다. 이 경우에는 조회한 엔티티를 사용하지 않아도 쿼리가 나간다. 엔티티를 실제 사용하는 시점에 조회하고 있으면 EntityManager.getRefernce()를 사용한다. 이 메소드는 실제 엔티티 객체가 아닌 프록시 객체를 리턴한다. 프록시 클래스는 .. 2021. 7. 8.
자바 ORM 표준 JPA 프로그래밍 - 7장 고급매핑 이번 장에서 다루는 내용들이다. 상속 관계 매핑 @MappedSuperclass 복합 키와 식별 관계 매핑 조인 테이블 엔티티 하나에 여러 테이블 매핑하기 상속 관계 매핑 RDBMS에는 객체지향 언어처럼 상속이라는 개념이 없다. 대신 그림과 같이 슈퍼타입 서브타입 관계 라는 모델링 기법이 상속 개념과 유사하다. ORM에서의 상속 관계 매핑은 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 이 슈퍼타입 서브타입 논리 모델을 실제 테이블로 구현할 때는 3가지 방법중 하나를 선택할 수 있다. 각각의 테이블로 변환 모두 테이블로 만들고 조회할 때 조인을 사용한다. JPA에서는 조인 전략이라고 한다. 통합 테이블로 변환 테이블을 하나만 사용하여 통합한다. JPA에서는 단일 테이블 전략이라고 .. 2021. 7. 8.
자바 ORM 표준 JPA 프로그래밍 - 6장 다양한 연관관계 매핑 외래키와 연관관계 외래 키를 관리하는 테이블, 객체(엔티티)가 연관관계의 주인입니다. 주인이 아니면 mappedBy 속성을 사용해 주인 필드 이름을 값으로 입력합니다. 다대일(@ManyToOne) [Member Team] 연관관계의 주인은 항상 다(N)쪽입니다. ERD에서 화살표 실선은 연관관계 주인이며 점선은 주인이 아니라는 표시입니다. 주인이 아닌 객체는 조회를 위한 JPQL이나 객체 그래프를 탐색할 때 사용합니다. 양방향 연관관계는 항상 서로를 참조해야 합니다. 서로를 참조하기 위해선 편의상 메소드를 작성하는 것이 좋습니다. Member의 setTeam()과 Team의 addMember() 메소드가 그런 메소드들입니다. 메소드는 한쪽에만 작성하는 것이 좋으며 양쪽에 다 작성하면 무한루프에 빠질 수 .. 2021. 7. 5.