JPA(Java Persistence API)는 자바 ORM 기술에 대한 API 표준입니다.

그렇기 때문에 JPA는 ORM의 장점과 단점을 가지고 있습니다.

 

ORM

ORM이란 Object Realational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것입니다.

장점

객체 지향적인 접근

객체 지향 프로그래밍 언어를 사용하는 애플리케이션과 관계형 데이터베이스 간에는 패러다임의 불일치가 있습니다.

객체는 클래스와 상속, 다형성 등의 개념을 사용하여 데이터를 표현하고, 관련된 동작을 캡슐화합니다.

반면에 관계형 데이터베이스는 테이블과 열, 행 등의 개념을 사용하여 데이터를 저장하고 관리합니다.

ORM은 이러한 불일치를 해결하여 객체 지향적인 코드로 데이터베이스를 다룰 수 있게 해줍니다.

 

독립성

특정 데이터베이스에 종속되지 않고 객체 지향적인 코드를 작성할 수 있습니다.

 

생상성 향상

SQL 쿼리를 직접 작성하는 번거로움을 줄일 수 있습니다.

대신 객체 지향적인 코드로 데이터베이스 조작을 수행할 수 있으므로 개발자가 더 쉽게 작업할 수 있습니다.

CRUD 기능을 자동으로 처리하고, 데이터베이스와의 통신을 추상화하여 개발 시간을 단축시킵니다.

 

유지보수성 향상

객체와 데이터베이스 간의 매핑이 명확해지므로, 코드의 유지 보수가 용이해집니다.

데이터베이스 스키마의 변경이 있을 때도 ORM을 사용하면 코드 수정이 최소화됩니다.

일반적으로 객체와 데이터베이스 사이의 매핑을 설정하는 많은 기능을 제공하여 유지 보수성을 향상시킵니다.

단점

SQL 제어의 어려움

복잡한 조인이나 집계 함수를 포함하는 쿼리를 작성하는 경우에는 네이티브 쿼리(native query)를 사용해야 할 수도 있습니다.

네이티브 쿼리를 사용하게 되면 특정 데이터베이스에 종속될 수도 있습니다.

 

성능 저하 위험

자동으로 생성되는 쿼리가 많기 때문에 개발자가 의도하지 않는 쿼리로 인해 성능이 저하될 수도 있습니다.

 

학습 곡선

개념과 기능을 이해하는 데 시간이 걸릴 수 있습니다.

'채워가는 지식 > Spring Boot' 카테고리의 다른 글

커넥션 풀이란?  (0) 2024.04.17
영속성 컨텍스트란?  (0) 2024.04.03
스프링에서 프록시와 AOP란?  (0) 2024.03.04
Bean에 대하여...  (0) 2024.02.16

+ Recent posts