[DB] ORM과 JPA란

🏁 학습할 내용
- ORM
- JPA
🙋ORM(Object Relation Mappnig)
🤣필요한 이유
특별한 도메인을 위한 언어들을 DSL라고 한다.
이 DB를 위한 DSL가 바로 그 SQL(Structured Qurey Langague)문이라는 것
현재 스프링 부트를 위한 나의 언어는 코틀린이다.
하지만 불행히도, 나는 SQL을 잘하지 못한다.
하지만 ORM을 이용하면, SQL을 직접 작성하지 않아도 DB를 제어할 수 있다.
간단히 말하면, 나의 코틀린 코드를 기반으로 SQL문을 대신 작성해주는 대리자라고 생각하면 편할 듯
😄장점
- SQL을 작성하지 않고, 개발자는 객체 모델과 비지니스 로직에 집중할 수 있음 (생산성)
- 객체 지향적인 코드 작성이 가능 (객체 간의 관리)
- DBMS 종류와 상관 없이 일관적인 코드로 사용할 수 있음 (유지 보수성)
- 이미 검증된 내용이므로, 개발자의 휴먼에러 발생률이 내려감 (휴먼 에러 감소)
😥단점
- 복잡하고 무거운 Query는 아무래도 순수 SQL에 비해, 속도가 떨어질 수 있음
- 고급 데이터 베이스 기능을 지원하지 않은경우, 직접 SQL을 작성해야할 수 있음
☕JPA(Java Persistence API)


🧩역할
Java진영에서 ORM 기술 표준으로 사용하는 인터페이스 모음
즉, Java 진영에서 ORM을 쓰고 싶다, 그러면 JPA를 떠올리면 됨
Spring에서 사용하는 Spring Data JPA는 JPA를 사용하는 프레임워크지, JPA는 아님,
⚠️주의할 점
주의할 점은 JPA는 인터페이스의 모음이다.
즉 실제 JPA 인터페이스를 구현한 클래스는 따로 존재한다.

가장 대표적인게 Hibernate이므로, 추후, Hibernate를 기준으로 학습해보자
출처
https://ultrakain.gitbooks.io/jpa/content/
Introduction · jpa
ultrakain.gitbooks.io
[Spring JPA] JPA 란?
이번 글에서는 JPA(Java Persistence API)가 무엇인지 알아보려고한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이
dbjh.tistory.com