반응형
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
- F1학생비자
- 복수학위제도
- 파이데이아창의인재학과
- 유학생 준비물
- 해외유학
- 개발일지
- 미국유학생
- 자바 스터디
- 미국유학생활
- 미국유학
- 만다라트프로젝트
- California State University Sacramento
- Kenneth Park
- 미국대학생활
- 개인 프로젝트 개발일지
- 케네스
- jpa
- 비전공자 git
- 사이드프로젝트
- 케네스로그
- i-20
- 2+2
- 유학생대학생활
- Java 스터디
- CSUS
- 미국대학
- JVM아키텍처
- java
- 자바
- 부산외대
Archives
- Today
- Total
케네스로그
[JPA] JPA의 등장배경 본문
반응형
SQL 중심 개발의 문제점
- SQL에 의존적인 개발
객체를 관계형 데이터베이스에 저장하여 관리하게 된다.
여기서 발생하는 문제는 직접적으로 데이터를 저장하기 위해 SQL을 통해 작업하게 된다.
이 과정에서 반복적인 작업을 해야하는 불편함이 발생한다.
또한, 객체를 SQL로, SQL로 받아와서 객체로 전환하는 패러다임 일치 작업이 요구되어 진다.
public class Member {
private String memberId;
private String name;
private String tel;
}
INSERT INTO MEMBER(MEMBER_ID, NAME, TEL) Values
SELECT MEMBER_ID, NAME, TEL FROM MEMBER M
UPDATE MEMBER SET .. TEL = ?
- 객체와 관계에 대한 패러다임의 불일치
객체지향은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등의 다양한 장치를 제공한다.
이러한 장치를 기반으로 코드를 작성하고 설계하게 된다.
하지만 데이터베이스에 이러한 기반의 코드를 전달하기 위해서 SQL매핑작업이 요구되어 진다.
객체 -> SQL변환 -> SQL -> RDB
객체와 관계형 데이터베이스의 차이
- 상속
- 연관관계
- 데이터 타입
- 데이터 식별 방법
JPA?
Java Persistnece API
의 약자로, 자바 진영의 ORM 기술 표준을 뜻한다.
ORM: Object-Relational Mapping(객체관계매핑)
객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계할 수 있도록 해준다.
ORM 프레임워크가 중간에서 SQL 매핑작업을 대신해서 수행한다.
JPA의 성능 최적화 기능
1차 캐시와 동일성(identity) 보장
트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
지연 로딩(Lazy loading)
지연 로딩: 객체가 실제 사용될 때 로딩
즉시 로딩: JOIN SQL로 한번에 연관된 객체까지 미리 조회
데이터베이스의 방언
JPA는 특정 데이터베이스에 종속적이지 않다. 사용하는 DB에 따라 방언을 통해 SQL을 작성하게 된다.
각각의 데이터베이스가 제공하는 SQL문법과 함수 등에는 조금의 차이가 존재한다.
- 가변문자
- MySQL: VARCHAR
- Oracle: VARCHAR2
- 문자열을 자르는 함수
- SQL표준: SUBSTRING()
- Oracle: SUBSTR()
- 페이징
- MySQL: LIMIT
- Oracle: ROWNUM
이러한 특정 DB마다의 고유한 기능을방언
이라고 한다.
JPA는 hibernate.dialect
속성을 통해 방언을 설정할 수 있다.
- H2: org.hibernate.dialect.H2Dialect
- Oracle10g: org.hibernate.dialect.Oracle10gDialect
- MySQL: org.hibernate.dialect.MySQL5InnoDBDialect
hibernate는 위의 예시 방언 뿐 만 아니라 40가지 이상의 방언을 지원한다.
반응형
'Dev > JPA' 카테고리의 다른 글
[JPA] 자바의 객체관계와 DB의 테이블관계는 어떻게 다른지 직접 알아보자 (0) | 2023.03.13 |
---|---|
JPA N+1, 불필요한 쿼리를 줄여보자 w. join fetch (2) | 2023.02.23 |
JPA, 왜 쿼리가 이리도 많이 발생할까? feat 트랜잭션 (2) | 2023.02.14 |
[JPA]영속성 관리 (0) | 2023.01.02 |
[JPA]JPA의 기본 동작 과정 (0) | 2023.01.02 |