Framework & Library/Spring Boot

Spring Boot - ORM이란?

임빈영 2022. 2. 3. 23:59

ORM(Object Relational Mapping)

ORM이란?

 

 - 애플리케이션의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 의미한다. 즉, Java의 데이터 클래스와 관계형 데이터베이스의 테이블을 매핑해주는 것이다.

 - 객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간에 불일치가 존재한다. 이러한 차이로부터 발생하는 제약사항을 해결해주는 역할을 수행하는 것이 바로 ORM 기술이다.

 - ORM 기술의 대표적인 예로 JPA, Hibernate 등이 있다.

 

ORM의 장점

 - SQL 쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있다.

     개발자가 보다 비즈니스 로직에 집중하여 개발할 수 있다.

 

 - 재사용 및 유지보수가 편리하다.

     ORM 자체가 하나의 클래스로 독립적으로 작성되기 때문에 재사용이 가능하다.

     데이터베이스와의 매핑 정보를 명확하게 설계하기 때문에 따로 데이터베이스를 볼 필요가 없다.

 

 - DBMS에 대한 종속성이 줄어든다.

     DBMS를 교체하는 작업을 비교적 적은 리스크로 수행이 가능하다.

 

ORM의 단점

 - 프로그램의 복잡성이 커질 경우 ORM만으로 구현하기가 어려워진다.

    직접 쿼리를 구현하지 않아 복잡한 설계가 어렵다.

 

 - 잘못 구현할 경우 속도 저하가 발생한다.

    코드로 작성한 부문을 쿼리로 변환하는 작업이 존재하기 때문에 최적화된 코드 구현이 요구된다.

 

 - 대형 쿼리는 별도의 튜닝이 필요하다.


JPA(Java Persistence API)

JPA란?

 - JPA는 Java Persistence API의 약자이며, ORM과 관련된 인터페이스의 모음이다.

 - Java 진영에서 표준 ORM 기술로 채택되어 있다.

 - ORM이 큰 개념이라고 하면, JPA는 더 구체화시킨 스펙을 포함하고 있다.

 

Hibernate란?

 

 - ORM Framework 중 하나이다.

 - JPA의 실제 구현체 중 하나이며, 현재 JPA 구현체 중 가장 많이 사용되고 있다.

 

Spring Data JPA란?

 - Spring Framework에서 JPA를 편리하게 사용할 수 있게 지원하는 라이브러리이다.

 - Repository 개발 시 인터페이스만 작성하면 구현 객체를 동적으로 생성해서 주입시켜주며, CRUD 기능을 기본적으로 제공해준다.


 

GitHub - qlsdud0604/spring-boot-study

Contribute to qlsdud0604/spring-boot-study development by creating an account on GitHub.

github.com

 

728x90