SMALL

JDBC 프로그래밍을 하다 보면, 번거롭게 항상 반복되는 코드가 존재한다. 

이러한 반복적인 일들을 Persistence Framework에서 채워주고 개발자들은 자신의 비즈니스 로직에 더욱 집중할 수 있게 된다. 

 

Persistence Framework가 무엇인지 알아보자. 

  • Persistence 
    • 데이터의 지속성 ( 영속성 )
    • 애플리케이션을 종료하고 다시 실행하더라고 이전에 저장한 데이터를 다시 불러올 수 있는 기술
  • Framework
    • 애플리케이션 동작에 필요한 구조를 특성에 맞게 구현해 놓은 것
    • <-> Library : 개발에 필요한 도구들을 모아 놓은 것

각각의 단어에 뜻을 대충 이해하고 전체적인 단어의 뜻을 보면

데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합으로, 
JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장한다.

 

Persistence Framework의 종류로는 대표적으로 2가지가 존재한다.

SQL Mapper

  • SQL 문장으로 직접 데이터베이스 데이터를 다룸
  • 대표적인 예시 Mybatis
  • 개발자가 직접 쿼리를 짜서, 복잡한 쿼리의 경우 성능 튜닝에 좀 더 유리하다

ORM

  • 자바 객체를 통해 간접적으로 데이터베이스 데이터를 다룸 ( SQL을 자동으로 생성해줌 )
  • 대표적인 예시 Hibernate
  • 단순 CRUD의 경우에는 개발자가 직접 반복적인 쿼리를 짜지 않아 간단하고 좋지만, 복잡한 쿼리의 경우 자동 생성된 쿼리를 분석하고 튜닝하는데 번거로울 수 있다

 

 

LIST
SMALL

JPA ( Java Persistence API )

- 자바 ORM 기술에 대한 API 표준 명세

- 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스

 

ORM ( Object Relational Mapping )

- 객체와 관계형 데이터베이스를 매핑하는 기술

  ( DB Data --- Mapping --- Object ) 

- 비교되는 개념으로는 SQL Mapper가 있다

  ( SQL --- Mapping --- Object )

 

이 각각의 개념을 머리속에 생각해보면, 

자바에서 ORM기술을 사용하여 애플리케이션을 짜고 싶으면, 그의 표준인 JPA를 사용하여 작성해야 한다. 

( ORM을 사용하기 위해서는 표준인 JPA가 있지만, SQL Mapper를 사용하기 위해서는 표준이라고 딱히 정의된 부분은 없는 것 같다. 그냥 SQL를 통해 실행된 DB Data를 애플리케이션 레벨에 맞는 객체로 전환한다고 생각하면 될 것 같다.) 

 

위에서 말한것 처럼, JPA는 기술 명세이다.

어떻게 사용할지 가이드만 제공한 것이지, 실제 구현체가 아니다.

단순 인터페이스이다. 

 

그렇다면, 왜 JPA라는 표준까지 정해 놓으면서, ORM을 사용하려 하는 것인가

- DBMS에 대한 종속성을 줄일 수 있다.

- 객체 지향적인 코드로 더 직관적이고 비즈니스 로직에 더 집중할 수 있다.

 

더 나아가 JPA 기술 명세의 구현체인 ORM 프레임워크를 사용하면

개발자가 직접 query를 작성하지 않고, 메서드 호출로 원하는 데이터를 조회할 수 있고, 애플리케이션 레벨의 객체로 전환도 해주는 편리함을 누릴 수 있다. 

( ex : Hibernate ) 

 

LIST

+ Recent posts