-
[Spring, Spring Boot] JAVA ORM (Object Relational Mapping) 객체 관계 매핑Spring 2024. 11. 26. 15:01
JAVA ORM (Object Relational Mapping) 객체 관계 매핑
객체지향 언어와 데이터베이스 간의 상호작용을 쉽게 하기 위한 기술인 ORM(Object Relational Mapping)에 대해 설명합니다. ORM을 사용하면 SQL 쿼리를 직접 작성하지 않아도 데이터베이스와 통신할 수 있으며, 데이터베이스 테이블을 자바 클래스와 매핑하여 코드의 가독성과 유지보수성을 크게 향상시킵니다.
ORM 기본 개념
- 객체와 테이블 간의 매핑
- 데이터베이스의 테이블을 자바 클래스와 1:1로 매핑합니다. 이를 통해 객체지향적인 코드를 유지하면서도 관계형 데이터베이스에 쉽게 접근할 수 있습니다.
- 자동 쿼리 생성
- ORM은 데이터 조작에 필요한 SQL 쿼리를 자동으로 생성해 줍니다. 복잡한 SQL을 직접 작성할 필요 없이 객체의 메소드 호출로 데이터를 조작할 수 있습니다.
- 객체지향 프로그래밍의 장점 유지
- 데이터베이스와의 상호작용 시에도 객체지향적인 코드 스타일을 유지함으로써 높은 생산성과 유지보수성을 유지할 수 있습니다.
주요 JAVA ORM 프레임워크
1. JPA (Java Persistence API)
- 자바의 표준 ORM 인터페이스입니다. JPA는 직접적인 구현체가 아니라 인터페이스의 집합으로, 이를 구현한 다양한 ORM 프레임워크를 통해 사용됩니다.
JPA의 장점
- 코드 가독성 향상: 복잡한 SQL을 숨기고 객체지향적인 코드로 작업할 수 있어 코드 가독성이 좋아집니다.
- 유지보수성 향상: 데이터베이스 변경 시에도 JPA를 사용하면 많은 부분의 코드가 자동으로 관리되므로 유지보수가 용이합니다.
- 데이터베이스 독립성: JPA를 통해 특정 데이터베이스에 종속적이지 않은 코드를 작성할 수 있습니다. 데이터베이스를 변경해도 코드의 수정이 최소화됩니다.
JPA의 단점
- 복잡한 쿼리의 성능 문제: 복잡한 SQL 쿼리가 필요한 경우 자동 생성된 쿼리의 성능이 떨어질 수 있으며, 이러한 경우 네이티브 SQL을 사용하는 등의 조치가 필요합니다.
- 초기 학습 곡선: JPA는 배우기 쉽지 않습니다. 초기에 학습해야 할 개념들이 많아 학습 곡선이 높을 수 있습니다.
2. Hibernate
- JPA의 가장 대표적인 구현체 중 하나로, 다양한 기능을 통해 JPA를 구현하며 추가적인 기능들도 제공합니다. Hibernate는 JPA의 모든 기능을 지원하면서도, 캐시 기능이나 지연 로딩(lazy loading) 등 다양한 부가 기능을 통해 성능을 최적화할 수 있는 도구입니다.
'Spring' 카테고리의 다른 글
[Spring, Spring Boot] 관점 지향 프로그래밍 AOP (Aspect-Oriented Programming) (0) 2024.11.28 [Spring, Spring Boot] 의존성 주입 (Dependency Injection, DI) (0) 2024.11.28 [Spring Boot] Lombok 롬복 설치 (Eclipse STS) (0) 2022.05.26 [Spring] STS 롬복 설치 후 에러 (0) 2022.03.10 [Spring] junit 테스트 해보기 (0) 2022.01.20 - 객체와 테이블 간의 매핑