티스토리 뷰

Java

JPA - 0. JPA 소개, DB 용어 정리

kingsubin 2020. 7. 26. 13:36

 

www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

SQL 중심 개발의 문제점

- 객체를 관계형 DB에 관리

- SQL 중심적인 개발

- CRUD 의 무한 반복, 지루한 코드

- 패러다임의 불일치 : 객체 vs 관계형 데이터베이스

 

- 객체를 관계형 데이터베이스에 저장. 

객체 -> SQL 변환 -> RDB(SQL)

 

- 객체와 관계형 데이터베이스의 차이

1. 상속

2. 연관관계

3. 데이터 타입

4. 데이터 식별 방법

 

1. 객체의 경우 상속이 존재하지만 Table의 경우 상속이 존재하지 않고 비슷한 슈퍼타입 서브타입 관계가 존재한다.

 -> 자바 컬렉션을 예시로 설명

2. 객체는 참조를 사용, 테이블은 외래 키를 사용

 -> 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다.

 

결국 객체를 객체답게 모델링 할 수록 매핑 작업만 늘어난다.

객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수는 없을까 ?

 


JPA ?

- Java Persistence API

- 자바 진영의 ORM 기술 표준

 

ORM ?

- Object-realtional mapping (객체 관계 매핑)

- 객체는 객체대로 설계

- 관계형 데이터베이스는 관계형 데이터베이스대로 설계

- ORM 프레임워크가 중간에서 매핑

- 대중적인 언어에는 대부분 ORM 기술이 존재

 

JPA는 애플리케이션과 JDBC 사이에서 동작

ex) 저장 persist

JPA에서 Entity 분석, INSERT SQL 생성, JDBC API 사용, 패러다임 불일치 해결

 

JPA는 표준 명세

- JPA는 인터페이스의 모음 

- JPA 2.1 표준 명세를 구현한 3가지 구현체

- Hibernate, EclipseLink, DataNucleus

 

그래서 JPA를 왜 사용해야 하는가 ?

- SQL 중심적인 개발에서 객체 중심으로 개발

- 생산성

- 유지보수

- 패러다임의 불일치 해결

- 성능

- 데이터 접근 추상화와 벤더 독립성

- 표준

 

유지보수로 보았을때 기존에는 필드 변경시 모든 SQL을 수정해야 했으나 JPA의 경우에는

필드만 추가하면 SQL은 JPA가 처리해주므로 유지보수성이 뛰어나다고 할 수 있다.

 

성능 최적화 기능

1. 1차 캐시와 동일성 (identity) 보장

2. 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)

3. 지연 로딩 (Lazy Loading)

 

1. 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상

2. DB Isolation Level이 Read Commit 이어도 애플리케이션에서 Repeatable Read 보장

 

쓰기 지연

트랜잭션을 커밋할 때까지 SQL을 모음

JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송

 

 


DB 용어 정리

Database

- 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합

- 공용 데이터들의 묶음

 

- 장점

  1. 데이터 중복 최소화
  2. 데이터 공유
  3. 일관성, 무결성, 보안성 유지
  4. 최신의 데이터 유지
  5. 데이터의 표준화 가능
  6. 데이터의 논리적, 물리적 독립성
  7. 용이한 데이터 접근
  8. 데이터 저장 공간 절약

- 단점

  1. 데이터베이스 전문가 필요
  2. 많은 비용 부담
  3. 데이터 백업과 복구가 어려움
  4. 시스템의 복잡함
  5. 대용량 디스크로 엑세스가 집중되면 과부하 발생

CRUD

- Create, Retrieve, Update, Delete

 

SQL

- Structured Query Language

- 대소문자 구별X / Interpreter언어

 

트랜잭션

트랜잭션은 하나의 논리적 단위를 구성하는 데이터베이스 연산의 모임이다.

 

데이터베이스는 흔히 다음과 같은 ACID 규칙을 만족해야 한다

1. 원자성 (Atomicity) 

- 한 트랜잭션의 모든 작업이 수행되든지, 아니면 하나도 수행되지 않아야 한다.

  트랜잭션이 제대로 실행되지 않았으면 롤백 한다.

2. 일관성 (Consistency) 

- 모든 트랜잭션은 데이터베이스에서 정한 무결성 (integrity)조건을 만족해야 한다.

3. 격리성 (Isolation) 

- 두 개의 트랜잭션이 서로에게 영향을 미칠 수 없다. 

  트랜잭션이 실행되는 동안의 값은 다른 트랜잭션이 접근할 수 없어야 한다.

4. 내구성 (Durability)

- 트랜잭션이 성공적으로 끝난 뒤에는, (시스템 실패가 일어나더라도) 그 결과가 데이터베이스에 유지되어야 한다.

 

관계형 데이터베이스 (RDB : Relational Database)

관계형 데이터 모델이랑 데이터를 구성하는데 필요한 방법 중 하나로 모든 데이터를 2차원의 테이블 형태로 표현해준다.

 

DBMS (Database Management System)

- 데이터베이스를 관리하는 시스템

- 대량의 데이터를 처리하는 시스템

- 다양한 자료구조와 검색구조 (sorting, indexing ...) 을 사용해 빠른 검색 가능

- 검색에 최적화

 

DBMS의 종류

- 계층형 데이터베이스

- 네트워크형 데이터베이스

- 관계형 데이터베이스 (RDBMS) => 테이블형 데이터베이스

- 객체지향 데이터베이스

- 객체관계형 데이터베이스 (ORDBMS)

- NoSQL (Not Only SQL)

 

DBMS 언어

- 데이터 정의 언어 (DDL : data definition language) - Create, Alter, Drop ..

- 데이터 조작 언어 (DML : data manipulation language) - Selecct, Insert, Delete, Update ...

- 데이터 제어 언어 (DCL : data control language) - Grant, Revoke, Commit, Rollback

 

RDBMS (Relational Database Management System)

- 관계형 데이터베이스 시스템

- 테이블 기반의 DBMS

- 모델링은 E-R (Entity Relationship) 모델을 사용

- 테이블을 Entity(기본) 과 Relationship(유도) 테이블로 구분하는 방식

- 테이블을 테이블 단위로 관리

- 테이블끼리 중복정보는 최소화

 

 

 


※출처

www.inflearn.com/course/ORM-JPA-Basic/dashboard

ko.wikipedia.org/wiki/데이터베이스

 

'Java' 카테고리의 다른 글

JPA - 2. 엔티티 매핑  (0) 2020.07.26
JPA - 1. 영속성 관리 - 내부 동작 방식  (0) 2020.07.26
JPA - 4. 다양한 연관관계 매핑  (0) 2020.07.25
JPA - 3. 연관관계 매핑  (0) 2020.07.25
JPA - 6. 프록시와 연관관계 관리  (0) 2020.07.25