1. ORM
- Ogject-Relationcal Mappping
- 즉, 객체와 관계형 데이터베이스 매핑을 의미함
- OOP(Object Oriented Programing)에서 쓰는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블을 매핑(연결)하는 것을 의미
- 즉, Java객체와 RDB(관계형 데이터 베이스)의 매핑을 의미함
- ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메소드)로서 데이터를 조작할 수 있음
- 예를 들어 지금까지 Member테이블의 데이터를 출력하기 위해 MySQL에서 “SELECT * FROM member_tb;라는 쿼리를 실행했어야 했다.
- 그러나 ORM을 사용하면 member_tb 테이블과 매핑된 객체를 member라고 했을 때, member.findAll();라는 메소드 호출로 데이터 조회가 가능함
2. ORM 장단점
(1) 장점
- 코드량을 줄일 수 있다.
- 실제 사용 코드와 DB테이블 코드를 분리 시킬 수 있다.
- DBMS의 종속성을 줄일 수 있다. (핵심)
- 종속성이란? 프로그램 구조가 데이터 구조에 영향을 받는지
- 즉, SQL문을 DBMS에서 작성하지 않아도 된다.
(2) 단점
- 완전한 ORM은 아직까지 완성되지 않았다.
- 사용하기는 편하지만 설계는 매우 신중하게 해야한다.
- 프로젝트의 복잡성이 커질경우 난이도 또한 올라갈 수 있다.
- 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수 있다.
- 일부 자주 사용되는 대형 쿼리는 속도를 위해 SP를 쓰는 등 별도의 튜닝이 필요한 경우가 있다.
3. ORM 프레임워크
(1) JPA/Hibernate ⭐
- JPA(Java Persistence API)는 자바의 ORM 기술 표준으로 인터페이스의 모음
- ORM을 사용하기 위해서 인터페이스를 모아둔 것
- JPA framework
(2) Seqeulize
- Sequelize는 Postgres, MySQL, MariaDB, SQLite 등을 지원하는 Promise 에 기반한 비동기로 동작하는 Node.js ORM이다.
(3) Django ORM
- python기반 프레임워크인 Django에서 자체적으로 지원하는 ORM이다.