Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- auditing
- ORM
- 제로베이스
- 개발자
- 유효성검사
- 엔티티 설계
- DAO 연동 컨트롤러 서비스 설계
- 백엔드공부
- 백엔드스쿨
- 데이터베이스 연동
- 인텔리제이
- validated
- 리포지토리 인터페이스
- #devops #terraform #state
- 백엔드
- MariaDB
- 프로젝트 생성
- 스프링 부트 핵심 가이드
- 스프링부트실전가이드
- Swagger
- JPA
- 제로베이스 #백엔드 #Java #Spring #개발자 #백엔드공부 #백엔드 스쿨
- DAO 설계
- Java
- spring
Archives
- Today
- Total
JeongJin's Blog
06. 데이터 베이스 연동 (2) 본문
6.2 ORM
- Object Relation Mapping 의 줄임말로 객체 매핑을 의미한다.
- 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법
- ORM을 이용하면 쿼리문 작성이 아닌 코드(메서드)로 테이블을 조작할 수 있다.
ORM 의 장점
- ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다.
- 쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어든다.
- 객체지향적으로 데이터베이스에 접근할 수 있어 코드의 가독성을 높인다.
- 재사용 및 유지보수가 편리하다.
- ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용이 용이하다.
- 객체들은 각 클래스로 나뉘어 있어 유지보수가 수월하다.
- 데이터베이스에 대한 종속성이 줄어든다.
- ORM을 통해 자동 생성된 SQL문을 객체를 기반으로 데이터베이스 테이블을 관리하기 때문에 데이터베이스에 종속적이지 않다.
- 데이터베이스를 교체하는 상황에서도 비교적 적은 리스크를 부담한다.
ORM의 단점
- ORM만으로 온전한 서비스를 구현하기에는 한계가 있다.
- 복잡한 서비스의 경우 직접 쿼리를 구현하지 않고 코드로 구현하기 어렵다.
- 복잡한 쿼리를 정확한 설계 없이 ORM만으로 구성하게 되면 속도 저하 등의 성능 문제가 발생할 수 있다.
- 애플리케이션의 객체 관점과 데이터베이스의 관계 관점의 불일치가 발생한다.
- 세분성(Granularity): ORM의 자동 설계 방법에 따라 데이터베이스에 있는 테이블의 수와 애플리케이션의 엔티티(Entity)클래스의 수가 다른 경우 발생 (클래스가 테이블의 수보다 많아질 수 있다.)
- 상속성(Inheritance): RDBMS에는 상속이라는 개념이 없다.
- 식별성(Identity): RDBMS는 기본키(primary key)로 동일성을 정의한다. 하지만 자바는 두 객체의 값이 같아도 다르다고 판단할 수 있다. 식별과 동일성의 문제
- 연관성(Associations): 객체지향 언어는 객체를 참조함으로써 연관성을 나타내지만 RDBMS에서는 외래키(foreign key)를 삽입함으로써 연관성을 표현한다. 또한 객체지향 언어에서 객체를 참조할 때는 방향성이 존재하지만 RDBMS에서 외래키를 삽입하는 것은 양방향의 관계를 가지기 때문에 방향성이 없다.
- 탐색(Navigation): 자바와 RDBMS는 어떤 값(객체)에 접근하는 방식이 다르다. 자바에서는 특정 값에 접근하기 위해 객체 참조 같은 연결 수단을 활용한다. 이 방식은 객체를 연결하고 또 연결해서 접근하는 그래프 형태의 접근 방식이다.
(ex) member.getOrganization().getAddress())
반면 RDBMS에서는 쿼리를 최소화하고 조인(JOIN)을 통해 여러 테이블을 로드하고 값을 추출하는 접근 방식을 채택한다.
'Book Study > 스프링 부트 핵심 가이드' 카테고리의 다른 글
06. 데이터베이스 연동 (4) (0) | 2023.10.30 |
---|---|
06. 데이터베이스 연동 (3) (0) | 2023.10.30 |
06. 데이터베이스 연동 (1) (0) | 2023.10.30 |
05. API를 작성하는 다양한 방법 (4) (0) | 2023.10.23 |
05. API를 작성하는 다양한 방법 (2) (0) | 2023.10.23 |