728x90
Table of Contents
ORM
ORM : Object Relation Mapping (객체 - 관계 맵핑)
관계형 데이터베이스(RDBMS)의 데이터를 java에서 배운 객체와 연결시키는 것입니다.
ORM의 장점
- 개발자가 SQL 쿼리가 아닌 직관적인 객체지향적 코드로 데이터 조작과 접근이 가능합니다.
- ORM은 독립적으로 작성되며 각 객체는 재활용이 가능해 재사용과 유지보수가 편리합니다.
- DBMS에 종속적이지 않아 DBMS의 교체에 있어도 비용과 시간, 리스크가 덜합니다.
- 매핑을 토대로 SQL을 자동 생성해 RDBMS의 데이터 구조와 java의 객체지향적 모델의 간극을 좁힐 수 있습니다.
- java의 경우 java에서 활용한 일부 메소드를 그대로 채택하여 사용이 가능해 가공이 편리합니다.
ORM의 단점
- 잘못 설계된 경우 구조의 일관성 문제로 인해 대다수 ORM에 문제가 생기므로 속도와 성능 저하가 유발됩니다.
- 프로시저가 많은 시스템의 경우에는 ORM의 객체지향적 장점을 활용하기 어렵습니다.
- 다량의 / 복잡한 대형 쿼리의 경우에는 SQL로 처리하는 것보다 ORM이 상대적으로 더욱 복잡할 수 있습니다.
JPA
JPA : Java Persistance API
JPA는 java 진영에서 ORM(Object-Relational Mapping)의 기술 표준으로 사용하는 인터페이스의 모음입니다.
java 진영의 Spring Boot는 JPA를 사용하여 데이터베이스를 처리합니다.
JPA는 인터페이스기 때문에 이를 구현할 실제 클래스가 필요합니다.
앞으로의 Spring Boot 학습 간 JPA를 구현한 Spring 대표 클래스인 Hibernate를 사용하겠습니다.
H2
H2: 개발용 등 소규모 프로젝트에 자주 운용되는 데이터베이스로, 파일 기반의 경량 데이터베이스입니다.
앞으로 매핑할 데이터를 저장할 데이터베이스입니다.
실제 운영 시스템은 H2가 아닌 규모있는 DB를 사용하는 것이 일반적입니다.
앞으로의 Spring Boot 학습 간 H2 데이터베이스를 사용하겠습니다.
H2 데이터베이스 설치 및 JPA + 하이버네이트 환경설정 방법
1. 파일 설정 (파일명: /프로젝트명/build.gradle)
dependencies {
runtimeOnly 'com.h2database:h2'
// H2 데이터베이스 라이브러리 : 설치 후 refresh gradle project
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// JPA 라이브러리 : 설치 후 refresh gradle project
}
2. 파일 설정 (파일명: /프로젝트명/src/main/resources/application.properties)
# DATABASE // H2 Database
spring.h2.console.enabled=true
## H2 콘솔의 접속을 허용할지의 여부
spring.h2.console.path=/h2-console
## 콘솔 접속을 위한 URL 경로
spring.datasource.url=jdbc:h2:~/local
## 데이터베이스 접속을 위한 경로
spring.datasource.driverClassName=org.h2.Driver
## 데이터베이스 접속 시 사용 드라이버
spring.datasource.username=sa
## 데이터베이스 사용자명
spring.datasource.password=
## 데이터베이스 패스워드
# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
## 데이터베이스 엔진 종류 설정
spring.jpa.hibernate.ddl-auto=update
## 엔티티 기준 테이블 생성 규칙 정의
### none - 엔티티가 변경되더라도 데이터베이스를 변경 X
### update - 엔티티의 변경된 부분만 적용
### validate - 변경사항이 있는지 검사만 실시
### create - 스프링부트 서버가 시작 시 모두 drop하고 재생성
### create-drop - create와 동일하나모두 drop
### ★ 개발 환경에서는 일반적으로 update, 운영 환경에서는 none / validate가 사용됌
3. 사용자의 홈디렉터리에 데이터베이스 접속 경로로 설정한 이름명의 db 파일 생성
상단의 코드 예시의 경우 local.mv.db 명의 빈 파일 생성(데이터베이스 파일)
** 홈디렉터리 - 윈도우: C:\Users\(사용자명) , 맥: /Users/(사용자명)
'DEV > Spring' 카테고리의 다른 글
[Spring] @Autowired 활용 의존성 주입, Spring Bean (2 / 2) (0) | 2023.11.16 |
---|---|
의존성 주입(Dependency Injection) (1 / 2) (0) | 2023.11.16 |
[어노테이션] @ResponseBody의 이해 (0) | 2023.11.02 |
[Spring Boot 기초] static 폴더와 template 폴더의 차이 (0) | 2023.10.30 |
[Spring Boot 기초] java 기반 Spring Boot 프로젝트 생성 방법 (0) | 2023.10.12 |