티스토리 뷰

Backend/Spring

#22 JPA - 등장

RadderNepa 2023. 9. 5. 00:45

● SQL을 직접 사용하는 것의 단점

- 지금까지는 직접 SQL을 작성해서 데이터 CRUD를 진행했다.

[직접 SQL을 작성하는 것의 단점]
1. 사람이 직접 문자열을 작성하기 때문에 실수할 수 있고 또 그것을 인지하는 시점이 느리다.
→ 즉, 잘못된 SQL로 인한 오류가 컴파일 시점에 발견되지 않고 런타임 시점에 발견되는 것이다.
2. 특정 데이터베이스에 종속적이게 된다.
ex) MySQL에서 PostgreSQL로 바뀌면 기존의 MySQL 쿼리를 전부 PostgreSQL에 맞게 바꿔야한다.
3. 반복 작업이 많아진다. 새로운 테이블을 만들 때마다 그에 맞는 CRUD 쿼리가 항상 필요하다.
4. JAVA의 객체와 데이터베이스의 테이블은 패러다임이 다르다.

서로 다른 패러다임 1

- 왼쪽이 JAVA의 객체 개념 / 오른쪽이 데이터베이스의 테이블 개념

인프런 - 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!(최태현)

 

서로 다른 패러다임 2

- Java에서는 상속 개념 아래 부모 클래스와 하위(자식) 클래스가 있다.

- 이러한 관계를 테이블로는 표현하기가 애매하다.

인프런 - 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!(최태현)


JPA(Java Persistence API)

- 이러한 단점을 극복하기 위해 등장한 것이 바로 JPA이다.(문자열 SQL을 사용하지 않기 위해 등장했다.)

- JPA는 Java 진영의 ORM(Object-Relational Mapping)이다.

- 뭔 소리인지 단어를 하나씩 뜯어보자

1. JPA(Java Persistence API)

Java : 언어 Java
Persistence : 영속성 = 서버가 재시작되어도 데이터는 영구적으로 저장되는 속성
API : 정해진 규칙
===================================================================================
[결론] JPA = 데이터를 영구적으로 보관하기 위해 Java 진영에서 정해진 규칙

2. ORM(Object-Relational Mapping)

Object : Java의 객체
Relational : 관계형 DB의 테이블
Mapping : 객체와 테이블을 짝짓는다.
===================================================================================
[결론] ORM = 테이블에 있는 정보와 객체에 있는 정보를 서로 짝짓는다.

인프런 - 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!(최태현)

[결론]
JPA란 java 객체와 관계형 DB의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java 진영 규칙

규칙

- 위에서 JPA를 규칙이라고 했는데 그 규칙을 구현한 코드가 바로 Hibernate이다.(JPA는 단지 규칙일 뿐이다.)

인프런 - 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!(최태현)


- Hibernate는 내부적으로 JDBC를 사용한다.

인프런 - 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!(최태현)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
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
글 보관함