- ORM(Object Relational Mapping) - 객체 관계 매핑

 

ORM은 RDB의 Table 과 자바 객체를 매핑시켜 좀 더 객체지향적인 개발을 가능하게 해주는 기술이다. 

 

- ORM Framework

DB Table과 자바 객체를 맵핑시켜 CRUD에 필요한 SQL을 자동으로 생성시켜주는 기술을 가진 프레임웤을 말한다.

그 중 하나가 JPA이다. 

 

- JPA (Java Persistence API)

JPA는 자바진영에서 사용하는 ORM 표준 기술이며, Hibernate 기반이다.

(* Hibernate 가장 많이 사용되고 있고, 가장 오래된 ORM기술).

 

Table과 자바 객체를 맵핑시켜서 SQL을 자동생성 시켜준다 ?

그렇다..

현재 본인도 myBatis를 이용한 프레임웤 환경에서 DAO(Data Access Object)를 이용해 쿼리들이 잔뜩 들어있는 .xml 매퍼에서 데이터를 조회해오고, 결과를 저장하고 있는데,,

이러한 방식은 객체지향적이라기 보다는 데이터 베이스관점으로 치우처진 개발이다.

 

물론 myBatis 방식이, SQL에 집중할 수 있는다는 장점을 가지고 있으나,

비슷하고 반복적인 무수히 많은 CRUD 쿼리를 작성하는데에 많은 시간과 비용이 소모되고 있다. 

또한 테이블 객체에 컬럼이 추가되거나 기존 컬럼에 변경이 생기는 경우,

관련된 모든 SQL 쿼리들을 찾아 모조리 수정해줘야 한다는 점에서 생산성이 떨어진다고 할 수 있다.

 

JPA 장점

JPA를 이용하면 반복적인 CRUD 쿼리 작성에 대한 수고를 없앨 수 있고, 

마치 자바 컬렉션에 데이터를 저장하듯 JPA객체에 저장할 데이터를 전달만 하면되기 때문에 생산성 향상과 유지보수에 용이하다. 

또한, MySql이나 Oracle DB 벤더에 의존적이지 않고 독립성이 있어, 프로젝트 진행 중 혹은 서비스 운영중 DBMS시스템 변경에 대해서도 유연하게 대처할 수 있다. 

 spring framework자체에서도 스프링 데이터 JPA라는 기술로 적극 지원하고 있고,

국내는 myBatis 이용률이 앞도적으로 높은편이지만, 전 세계적인 추세로는 ORM 기술에 대한 비중이 훨씬 높다.

 

 

 

 

 

'JPA' 카테고리의 다른 글

JPA- Entity 객체와 Table 맵핑 방법(복합키 매핑)  (0) 2020.04.12

+ Recent posts