본문 바로가기

spring25

자바 ORM 표준 JPA 프로그래밍 - 14장 컬렉션과 부가 기능 컬렉션 JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원한다. @OneToMany, @ManyToMany를 사용해서 엔티티 관계를 매핑 @ElementCollection을 사용해서 값 타입을 하나 이상 보관 하이버네이트는 엔티티를 영속 상태로 만들 때 컬렉션 필드를 하이버네이트에서 준비한 컬렉션으로 감싸서 사용한다. @Test public void test01() { Team team = new Team(); System.out.println("before persist : " + team.getMembers().getClass()); em.persist(team); System.out.println("after persist : " + team.getMe.. 2021. 8. 28.
자바 ORM 표준 JPA 프로그래밍 - 13장 웹 애플리케이션과 영속성 관리 OSIV OSIV(Open Session In View)는 영속성 컨텍스트를 뷰까지 열어둔다는 뜻이다. 영속성 컨텍스트가 살아있으면 엔티티는 영속상태로 유지된다. 따라서 뷰에서도 지연 로딩을 사용할 수 있다. spring: jpa: open-in-view: true // 기본값 OSIV가 true이면 뷰에서도 다음과 같이 지연 로딩을 할 수 있다. @GetMapping public Member findById() { Member member = memberService.findById(); Team team = member.getTeam(); System.out.println(team); ... } 하지만 OSIV를 false로 주게되면 다음과 같이 에러가 발생한다. View까지 영속성 컨텍스트가 유지되.. 2021. 8. 21.
자바 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.