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 |
Tags
- Spring Security
- openapi3
- MFA
- SpringRESTDocs
- Spring Batch
- gradle
- SpringBoot
- Pender
- vuejs
- JavaScript
- cheerio
- Flyway
- cloud native
- Filter
- T-OTP
- stopPropogation
- tasklet
- UsernamePasswordAuthenticationFilter
- Reduxpender
- MSA
- SWAGGER
- 리액트
- AuthenticatoinProvide
- vue
- preventdefault
- axios
- Crawling
- REACT
- OpenStack
- Spring REST Docs
Archives
- Today
- Total
Miracle Morning, LHWN
0. ORM 과 JPA 에 대해 본문
ORM (Object Relational Mapping) : 객체 - 관계 매핑
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑 (연결) 해주는 것이다.
ORM | DataBase | |
데이터 | 객체 (클래스) | 테이블 |
연관 관계 | 속성 (관계 매핑) | FK 혹은 Join Key |
# ORM 의 장점
- 객체 지향적이기 때문에 개발자가 비즈니스 로직 및 코드 자체에 집중할 수 있다.
- 관념적 코드 (Boilerplate code) 가 없거나 적어진다. (선언문, 할당 등) → 객체에 대한 코드를 작성하기 때문에 가독성이 올라간다.
- 코드의 재사용, 유지보수의 편리성이 증대된다.
- DBMS 의 종속성이 줄어든다. (객체의 관계를 바탕으로 SQL 을 자동으로 생성하기 때문)
※ Boilerplate code : 각종 문서에서 반복적으로 인용되는 문서의 한 부분으로서 일종의 템플릿을 의미한다.
가령, React 를 설치할 때 초기 세팅이 완료된 프로젝트를 만들기 위해 'create-react-app' 을 사용하는데 이것이 React 의 Boilerplate 이다.
(참고) Boilerplate 를 모아놓은 사이트 : www.boilrplate.com)
# ORM 의 단점
- N + 1 문제 등 해결해야 할 과제가 있다.
- 생성되는 쿼리 속도 등의 문제가 있다.
- 설계가 잘못되면 일관성이 무너지거나 성능 저하의 문제가 있다.
JPA (Java Persistence API) : Java 의 ORM 표준 기술
Java 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스로,
"프레임워크를 통해 데이터베이스에 쉽게 접근할 수 있는 통로" 이다.
Application 과 JDBC 사이에서 동작한다.
- 생산성/유지보수성을 향상해준다.
- DataBase 와 객체 지향 패러다임의 불일치를 해결해준다.
- 성능을 향상시킬 수 있다.
- 데이터 접근의 추상화와 벤더 독립성이 있다.
# JPA 의 구현체
- Hibernate
- Spring Data JPA : JPA 를 한단계 추상화시킨 Repository 인터페이스를 제공한다.
# 객체 매핑
@Entity | 이 클래스를 테이블과 매핑한다고 JPA 에게 알려주는 annotation 이다. @Entity annotaion 이 있는 클래스를 엔티티 클래스라고 한다. |
@Table | 엔티티 클래스에 매핑할 테이블 정보를 알려준다. name 속성을 이용하여 테이블 명을 지정하며, name 속성이 생략되어 있을 경우 클래스의 이름 (엔티티의 이름) 을 테이블 이름으로 매핑한다. |
@Id | 엔티티 클래스의 필드를 테이블의 기본키 (Primary Key, PK) 에 매핑한다. @Id 가 사용된 필드를 식별자 필드라고 한다. |
@Column | 필드를 컬럼에 매핑한다. |
출처 : fastcampus.co.kr/courses/204729/clips/
'IT 기술 > [JAVA] Spring Boot' 카테고리의 다른 글
5. 객체지향 쿼리언어_2 (0) | 2021.05.06 |
---|---|
4. 객체지향 쿼리언어_1 (0) | 2021.05.06 |
3. 프록시와 연관관계 (0) | 2021.05.05 |
2. 연관관계매핑 (0) | 2021.05.05 |
1. 엔티티 (Entity) 와 엔티티 매니저 (Entity Manager) (0) | 2021.05.05 |
Comments