Join

· JPA
사이드 프로젝트 진행 중에 JPA의 N+1 문제가 발생하였다. 매장 목록 조회 시 매장에 등록된 해쉬태그를 가져오기 위해 일대다 관계를 맺고 있는데 이것 때문에 데이터당 한번씩 더 조회가 되고 있었다. @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.REMOVE }) @JoinTable(name = "tag_of_store", joinColumns = @JoinColumn(name = "store_id"), inverseJoinColumns = @JoinColumn(name = "store_tag_id")) private Set tags; 지금은 데이터가 적어서 문제가 안되지만 데이터 100개를 조회한다면 ..
· JPA
페치 조인은 SQL에서 이야기하는 조인의 종류는 아니고 JPQL에서 성능 쵝적화를 위해 제공하는 기능이다. 연관덴 엔티티나 컬렉션을 한번에 조회하는 기능인데 join fetch 명령어로 사용할 수 있다. JPQL이 무엇인지 모르겠다면 아래 블로그 글을 참고 바란다. 객체 지향 쿼리 소개(JPQL, Criteria, Native, QueryDSL) JPA를 사용하면 EntityManager.find(), 객체 그래프 탐색(member.getTeam())과 같은 기능만으로 개발하기는 어렵다. 그리고 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 엔티티 객체를 devbksheen.tistory.com 엔티티 페치 조인 JPQL에서는 조인은 별칭을 사용할 수 없지만 하이버네이트는 별칭은 허용한다...
· JPA
데이터베이스 테이블의 연관관계를 설계하는 방법은 크게 2가지다. 조인 컬럼(외래 키) 사용 조인 테이블(브릿지 테이블) 사용 조인 컬럼 사용 테이블 간에 관계는 주로 조인 컬럼이라 부르는 외래 키 컬럼을 사용해서 관리한다. 연결할 테이블이 많아 질수록 컬럼이 많아질 수 있다. 조인한 테이블이 필수일때는 INNER JOIN(NOT NULL)을, 필수가 아닐때는 OUTER JOIN(NULL)으로 조인한다. 조인 테이블 사용 조인 테이블을 생성해 연결할 테이블들의 기본 키들을 엮어서 연결한다. 나는 보통 브릿지 테이블로 부르고 다대다 연결을 할때, 다른 테이블에 조인이 추가될 가능성이 높을때 주로 사용한다. 테이블마다 필요한 정보만 저장할 수 있어서 이 방법을 선호하지만 조인 테이블이 많아져 SQL이 느려질 ..
· Java
String Class 기존에 다른 언어에서는 문자열을 char형의 배열로 다루었으나 자바에서는 문자열을 위한 클래스를 제공한다. String클래스는 문자열을 저장하고 이를 다루는데 필요한 메서드를 제공한다. 변경 불가능한(immutable) 클래스 String클래스에는 문자열을 저장하기 위해서 문자형 배열 변수(char[]) value를 인스턴스 변수로 정의해놓고 있다. 인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수(value)에 문자형 배열(char[])로 저장되는 것이다. public final class String implements ... { private char[] value; ... } 한번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, ..
beekei
'Join' 태그의 글 목록