본문 바로가기

Dev.World/개발상식&언어

[개발상식] 17. ORM

ORM(Object Relational Mapping)

객체형 데이터(JAVA Object)와 관계형 데이터(RDB의 테이블)사이에서
개념적으로 일치하지 않는 부분을 해결하기 위하여 이 둘 사이를 Mapping하는 것을 의미한다.
객체형 데이터와 관계형 데이터의 각 속성들을 매핑할 경우, 관계형 데이터를 객체형 데이터처럼 사용가능하다.
쉽게 말해, SQL문 작성 없이 간단한 매핑설정으로
데이터 베이스의 테이블 데이터를 JAVA 객체로 전달받을 수 있는 것이다.
Hibernate, iBatis, Spring JPA 등이 존재한다.

무엇이 좋은가? ORM의 장점
생산성 / 유지보수성 향상
jsp를 이용해 프로젝트를 할 때, 중복된 jdbc코드를 작성하지 않아도 된다.
개발 로직 코드에 집중할 수 있다.
독립성
ORM은 DBMS에 종속적이지 않다.
MySQL을 사용하든가 오라클 디비를 사용하든가 매핑 설정 일부면 변경해주면 자바코드를 건드릴 일이 없다.

ORM 기술 표준인 JPA
하이버네이트 기반으로 만들어졌으며,
엔터티 매니저(Entity Manager)와 영속성 컨텍스트(Persistence Context)가 기본적인 구성요소이다.
엔터티 매니저는 엔터티를 저장, 조회, 수정, 삭제하는 일을 관리하고 처리한다.
영속성 컨텍스트는 엔터티 매니저가 엔터티를 저장, 조회와 같은 작업을 하는데
영속성 컨텍스트를 이용한다.
영속성 컨텍스트는 엔터티 매니저를 통해서만 접근이 가능하다.


+ 사족

myBatis는 ORM이 아니다.

그리고 ORM의 장점은 누구나 알고 있다.

하지만 국내 기업들은 ORM을 도입하고 있지 않다.

왜냐하면 그동안 myBatis로 해왔고,

그 인력들로 지금 서비스가 돌아가고 있으니까.

중소기업, 스타트업 뿐만 아니라 대기업들에게도 ORM체제로 바꾸기가 쉽지 않을 것이다.

기술적인 비용 뿐만 아니라,

주축을 이루고 있던 인력에 대한 교체도 이루어져야하기 때문이다.

구식을 함부로 구식이라고 얕잡아 볼 수 없는 이유이다.

그러면서 무조건 새로운 기술들을 취하기 보다는,

이전의 기술들을 익히고 그들만의 장점들이 무엇인지 파악하고

신기술을 도입하는 것이 올바른 길이라고 생각한다.




-..-