ORM프레임워크 3

<JPA> N+1 문제

JPA에서 N+1 문제란, 엔티티를 조회할 때 관계 매핑된 엔티티를 함께 조회할 때 발생하는 성능 문제이다. N+1 문제는 지연 로딩(lazy loading)과 일대다 및 다대다 관계 매핑 시 많이 발생한다. 예를 들어, 학교(School)와 학생(Student) 엔티티가 일대다 관계를 가지고 있다고 가정해보자. 즉, 하나의 학교는 여러 명의 학생을 가질 수 있으며, 하나의 학생은 하나의 학교에만 속할 수 있다. 이 때, JPA에서 일대다 관계를 조회할 때 N+1 문제가 발생할 수 있다. 예를 들어, 다음과 같은 코드로 학교에 속한 모든 학생의 이름을 출력하려고 할 때, List schools = schoolRepository.findAll(); for (School school : schools) { ..

ORM프레임워크 2023.02.27

<JPA> JPA란 무엇인가?

JPA 란? - Java Persistence API로 JAVA의 ORM 기술의 표준이다. - 자바 ORM에 대한 API 표준 명세이고, 인터페이스의 모음이다. 따라서 구현체가 없고, 사용하기 위해서는 ORM프레임워크를 선택해야한다. - 다양한 프레임워크가 존재하지만 가장 대중적인 것은 하이버 네이트이다. ORM 이란? - 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 연결한다는 뜻이며, 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이다. JPA의 특징 - SQL문이 아닌 Method를 통해 DB를 조작할 수 있다. - DB가 바뀌어도 새로 쿼리문을 수정할 필요가 없다. - 객체지향적인 코드 작성이 가능하다. - 각종 객체에 대한 코드를 별..

ORM프레임워크 2023.01.18

<Mybatis> 마이바티스 동적 쿼리 문법(1)

□ ● 태그 선언 방식 사용할 쿼리 * 다른 구문에서 재사용 가능한 sql구문을 정의할 때 사용 ● 사용예시 and name like '%'||'이'||'%' □ ● 태그 선언 방식 * 같은 파일 내에 정의해둔 태그 내의 쿼리들을 불러올 수 있게 해줌 ● 사용예시 name like '%'||'이'||'%' select * from member where □ ● 태그 선언 방식 결과 ● 사용예시 name = '이' □ ● 태그 선언 방식 결과 결과 * when절은 'else if'절과 동일한 기능을 하며 otherwise절은 'else'절과 동일한 기능을 한다.

ORM프레임워크 2022.05.19