무한확장공간

ORM

개발공부

ORM

Object-Relational Mapping


다짜고짜 서론,

ORM의 개념을 정확히 알기도 전에 Mapping을 하게 되었고,

(실제로 O-R Mapping을 하고도 이게 ORM이구나라고 인지하는데 꽤 걸렸다.) 결과값을 보고 유추를 먼저 해보았다. 

 

첫번째 접근,

O-R Mapping이 되어있는 프로젝트에 CRUD작업을 하면서, 어? 따로 Getter / Setter를 설정하지 않았는데도 실행되는것에 놀랐다.

이때까지만 해도 ORM 개념에 대한 생각까지 못미쳤고, 어딘가 해당 vo클래스가 생성되어 있겠거니 하고 넘어갔다. (사실 아니었음)

 

두번째 접근,

실제로 프로젝트를 생성하는 과정에서 데이터베이스 파일명과 Mapping 결과물(?)을 놓을 위치 등을 지정해주고

실행해준 결과 Vo와 비슷해보이는 클래스가 생성되었음을 확인 할 수 있었다.

(해당 방법은 자사 ORM 방식으로, 보편적으로 쓰이는 ORM 방식과 다를 수 있음. 아니다 다를께 분명함!)

결과물은 내가 첫번재 접근때 이 파일 저 파일 찾아보다가, '이게 Vo/Dto 인가?' 하고 발견했던 파일과 유사한 형식이었다.

그래서 음 ORM이라는 것은 내가 테이블을 보고 일일히 vo클래스를 만들어 주는것을 자동을 해주는 것일까? 라고 생각했다.

 

내가 이해한 ORM을 잘 표현해주는 사진 

 

그래서 ORM이 뭐라고?

 

"객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것"

"객체와 DB의 테이블이 매핑을 이루는 것"

"SQL문의 작성 없이 간단한 매핑 설정으로 데이터베이스의 Table Data를 java객체로 전달하는 것"

ex.

기존 쿼리 SELECT * FROM MEMBER 라는 쿼리를 ORM을 사용하면 Member 테이블과 매핑된 객체를 member라 할 때,

member.findAll()이라는 메서드 호출로 데이터 조회가 가능하다