이 글은 시리즈 물입니다. [1탄 ORM이란? JPA란? Hibernate란?] https://joosjuliet.github.io/orm_jpa_hibernate/
[2탄 Hibernate의 구조를 알자!] https://joosjuliet.github.io/hibernate_structure/
[3탄 Hibernate가 어떻게 obejct를 만드는가?] https://joosjuliet.github.io/hibernate_first_step/
시작하기전 기본마음가짐: db위주 프로그래밍에서 벗어나기 DB중심 위주의 프로그래밍이 아닌 현실 위쥐의 객체지향적 프로그래밍으로 전환해야겠다.
- DB설계 → 프로그램설계 가 아니라
- 프로그램 설계 → DB설계로 바꿔야겠다.
영속성이란?
영속성 컨텍스트의 이점
- 1차 캐시
캐시?
- Insert를 한 뒤에 커밋을 하지 않고 Select를 하면 데이터가 나온다.
- 그러면 이 데이터는 어디에 저장된 것일까?
- 그것이 바로 캐시이다.
- 즉, 실제 데이터베이스에 저장되진 않았지만 임시적으로 중간(캐시)에 저장된다.
이것이 바로 영속성 컨텍스트이다.
트랜잭션을 위해 이 기능을 이용한다.
캐시에는 데이터가 아니고 객체형태로 들어간다.
ORM이란?
- 객체가 테이블이 되도록 매핑 시켜주는 프레임워크
- 관계와 RDB 간의 차이를 중간에서 해결해 주는 것
패러디임의 불일치
RDB는 데이터 중심으로 구조화 되어있고, 집합적인 사고를 요구한다. 그리고 객체 지향에서 이야기하는 추상화, 상속, 다형성 같은 개념이 없다.
상속
연관관계
- 객체는 참조를 사용해서 다른 객체와 연관관계를 가지고 참조에 접근해서 연관된 객체를 조회
- 테이블은 외래키를 사용해서 다른 테이블과 연관관계를 가지고 조인을 사용해서 연관된 테이블을 조회
객체 그래프 탐색
이 패러다임의 불일치를 해결하기 위한 결과물이 JPA
JPA란?(Java Persistence API)
- 자바 진영의 ORM 기술 표준
- ORM을 사용하기 위한 인터페이스를 모아둔 것
- 개발자는 SQL을 직접 작성하는 것이 아니라 어떤 SQL이 실행될지 생각만 하면 된다.
Hibernate Framework란?
JPA를 사용하기 위해서 JPA를 구현한 ORM 프레임워크
참고자료: https://victorydntmd.tistory.com/195 자바 ORM 표준 JPA 프로그래밍 (책) https://www.javatpoint.com/hibernate-tutorial