Qna. ORM이란 무엇인가?
객체와 데이터베이스의 관계를 자동으로 매핑해 준다.
또한, 객체 지향적으로 데이터를 저장하고 조회할 수 있다. 즉, SQL을 직접 사용하지 객체 지향 언어의 문법으로 데이터베이스를 조작할 수 있다.
Qna. ORM의 장단점은 무엇인가?
장점
- 생산성 향상
- JPA에서 기본적인 CURD 지원과 Java 언어로 데이터베이스 조작이 간단하다.
- 보안성 강화
- SQL Injection 같은 보안 취약점 방지 (ORM이 내부적으로 SQL을 안전하게 생성)
단점
- 높은 학습 곡선
- 관련 기술을 익히고, 발생할 수 있는 성능 이슈 문제를 전부 파악하고 있어야 효율적으로 사용할 수 있다.
- 복잡한 쿼리를 해결하기 어렵다.
- 세부적인 쿼리 최적화는 어렵다.
- 동적 쿼리와 같은 문제는 QueryDSL을 통해 처리할 순 있다.
- 성능 이슈 고려
- N+1 문제
- 지연 로딩, 객체 그래프 탐색 비용
- 쓰기 작업 시 JPA 영속성 컨텍스트 관리 비용
JPA (Java Persistence API)

- Java 진영의 ORM 표준 기술
- Java Collection을 사용하는 것처럼 DB에 객체를 저장, 조회할 수 있다.
- Spring Data JPA는 JPA를 쉽고 편하게 사용할 수 있도록 하는 라이브러리이다.
- ex) Hibernate ...

JPA 조회 특징
- 같은 트랜잭션에서 조회한 엔티티의 동일성을 보장한다. (영속성 컨텍스트)
- 지연 로딩을 통해 불필요한 테이블 조인을 방지할 수 있다. (Lazy Loading)
JPA 단점
- 높은 학습 곡선
- 복잡한 쿼리를 해결하기 어렵다
- 성능 이슈 고려
- 즉시 로딩 등.
대량의 데이터 수정 작업 시, ORM 환경에서 효율적으로 처리할 수 있는 방법은 무엇인지?
JPA를 통해 대량의 데이터를 수정하는 경우, 영속성 컨텍스트에서 변경 감지를 통해 엔티티 상태 변화를 감지한다.
이에 따라 영속성 컨텍스트에 모든 엔티티가 적재되어 메모리 사용량 증가와 성능 저하가 발생할 수 있다.
이를 해결하기 위해 QueryDSL, JPQL로 update, delete와 같은 Bulk 연산을 통해 최적화한다.
프레임워크와 라이브러리 차이는 무엇인지?
프레임워크는 애플리케이션 전체의 구조와 흐름을 제한하며, 개발자는 프레임워크 위에서 규칙에 따라 필요한 부분을 간편히 구현할 수 있다.
반면, 라이브러리는 개발자가 필요할 때 호출하여 사용하며, 흐름을 제어할 수 있다.
즉, 프레임워크와 라이브러리의 주 차이점은 “제어 흐름”이라 할 수 있습니다.
'Spring Framework > Spring' 카테고리의 다른 글
Spring JDBC vs SQL Mapper vs ORM 차이점 비교 (장단점) (0) | 2025.03.28 |
---|---|
Spring Controller가 수백만 개의 요청을 처리하는 원리 - Spring Bean의 역할과 목적 (2) | 2025.03.18 |
Spring DI 방식 비교: 생성자 주입과 필드 주입의 차이점 정리 (0) | 2025.03.14 |
Spring ServletContainer와 SpringContainer의 차이 이해하기 (0) | 2025.03.04 |
Spring cloud Eureka 등록된 애플리케이션 조회하기 - open feign 통신 (0) | 2025.01.08 |
Qna. ORM이란 무엇인가?
객체와 데이터베이스의 관계를 자동으로 매핑해 준다.
또한, 객체 지향적으로 데이터를 저장하고 조회할 수 있다. 즉, SQL을 직접 사용하지 객체 지향 언어의 문법으로 데이터베이스를 조작할 수 있다.
Qna. ORM의 장단점은 무엇인가?
장점
- 생산성 향상
- JPA에서 기본적인 CURD 지원과 Java 언어로 데이터베이스 조작이 간단하다.
- 보안성 강화
- SQL Injection 같은 보안 취약점 방지 (ORM이 내부적으로 SQL을 안전하게 생성)
단점
- 높은 학습 곡선
- 관련 기술을 익히고, 발생할 수 있는 성능 이슈 문제를 전부 파악하고 있어야 효율적으로 사용할 수 있다.
- 복잡한 쿼리를 해결하기 어렵다.
- 세부적인 쿼리 최적화는 어렵다.
- 동적 쿼리와 같은 문제는 QueryDSL을 통해 처리할 순 있다.
- 성능 이슈 고려
- N+1 문제
- 지연 로딩, 객체 그래프 탐색 비용
- 쓰기 작업 시 JPA 영속성 컨텍스트 관리 비용
JPA (Java Persistence API)

- Java 진영의 ORM 표준 기술
- Java Collection을 사용하는 것처럼 DB에 객체를 저장, 조회할 수 있다.
- Spring Data JPA는 JPA를 쉽고 편하게 사용할 수 있도록 하는 라이브러리이다.
- ex) Hibernate ...

JPA 조회 특징
- 같은 트랜잭션에서 조회한 엔티티의 동일성을 보장한다. (영속성 컨텍스트)
- 지연 로딩을 통해 불필요한 테이블 조인을 방지할 수 있다. (Lazy Loading)
JPA 단점
- 높은 학습 곡선
- 복잡한 쿼리를 해결하기 어렵다
- 성능 이슈 고려
- 즉시 로딩 등.
대량의 데이터 수정 작업 시, ORM 환경에서 효율적으로 처리할 수 있는 방법은 무엇인지?
JPA를 통해 대량의 데이터를 수정하는 경우, 영속성 컨텍스트에서 변경 감지를 통해 엔티티 상태 변화를 감지한다.
이에 따라 영속성 컨텍스트에 모든 엔티티가 적재되어 메모리 사용량 증가와 성능 저하가 발생할 수 있다.
이를 해결하기 위해 QueryDSL, JPQL로 update, delete와 같은 Bulk 연산을 통해 최적화한다.
프레임워크와 라이브러리 차이는 무엇인지?
프레임워크는 애플리케이션 전체의 구조와 흐름을 제한하며, 개발자는 프레임워크 위에서 규칙에 따라 필요한 부분을 간편히 구현할 수 있다.
반면, 라이브러리는 개발자가 필요할 때 호출하여 사용하며, 흐름을 제어할 수 있다.
즉, 프레임워크와 라이브러리의 주 차이점은 “제어 흐름”이라 할 수 있습니다.
'Spring Framework > Spring' 카테고리의 다른 글
Spring JDBC vs SQL Mapper vs ORM 차이점 비교 (장단점) (0) | 2025.03.28 |
---|---|
Spring Controller가 수백만 개의 요청을 처리하는 원리 - Spring Bean의 역할과 목적 (2) | 2025.03.18 |
Spring DI 방식 비교: 생성자 주입과 필드 주입의 차이점 정리 (0) | 2025.03.14 |
Spring ServletContainer와 SpringContainer의 차이 이해하기 (0) | 2025.03.04 |
Spring cloud Eureka 등록된 애플리케이션 조회하기 - open feign 통신 (0) | 2025.01.08 |