티스토리 뷰
한달쓰기 9일차
JAVA ORM JPA 정리 1
1.2 패러다임의 불일치
- 패러다임?
- [명사] 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계. 또는 사물에 대한 이론적인 틀이나 체계.
- 객체 -> 파일 : 직렬화
- 파일 -> 객체 : 역직렬화
- 객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법도 다르다.
- 이것을 객체와 관계형 데이터베이스의 패러다임 불일치 문제라 한다.
- 따라서 객체 구조를 테이블 구조에 저장하는 데는 한계가 있다.
1.2.1 상속
- 객체 : 상속이라는 기능을 갖고있다.
- 테이블 : 상속이라는 기능이 없다.
- 모델링 슈퍼타입 서브타입 관계를 사용하면 객체 상속과 유사한 형태로 테이블을 설계할 수 있다.
1.2.2 연관관계
- 객체는 참조를 사용해서 다른 객체와 연관관계를 가지고 참조에 접근해서 연관된 객체를조회한다.
- 반면 테이블은 외래 키를 사용해서 다른 테이블과 연관관계를 가지고 조인을 사용해서 연관된 테이블을 조회한다.
- 객체는 참조가 있는 방향으로만 조회할 수 있다.
- 반면 테이블은 외래키 하나로 member join team 도가능하지만 team join member도 가능하다.
객체지향 모델링
- 객체는 참조를 통해서 관계를 맺는다.
정리
- 패러다임의 불일치 문제를 해결하기 위해 많은 노력을 기울여왔고 그 결과물이 바로 JPA이다.
1.3 JPA란 무엇인가?
* JPA(Java Persistence API)는 자바 진영의 OR 기술 표준이다.
* ORM(Object-Relational Mapping)이란 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다.
* ORM 프레임워크는 단순히 SQL을 개발자 대신 생성해서 데이터베이스에 전달해주는 것뿐만 아니라 패러다임의 불일치 문제들도 해결해 준다.
* EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술표준이 만들어졌는데 이것이 JPA이다.
* JPA -> 쉽게 말해서 인터페이스를 모아둔 것이다.
* JPA를 사용하려면 JPA를 구현한 ORM프레임워크를 선택해야 한다.
* JPA는 버전 2.2, 하이버네이트는 5.5 까지 나온듯하다.
* 하이버네이트 5.x참고 자료 : [https://okky.kr/article/366954](https://okky.kr/article/366954)
왜 JPA를 사용해야하는가?
* 생산성
* 유지보수
* 패러다임의 불일치 해결
* 성능
String memberId = "helloId";
Member member1 = jpa.find(memberId);
Member member2 = jpa.find(memberId);
- JDBC API를 이용했다면 회원을 조회할 때마다 select sql을 사용해서 데이터베이스와 두번 통신을 할텐데 JPA를 사용하면 회원을 조회하는 select sql을 한 번만 데이터 베이스에 전달하고 두번째는 조회한 회원 객체를 재 사용한다.
* 데이터 접근 추상화와 벤더 독립성
* 벤더마다(디비) 사용법이 다른경우가 많다
* 예) 페이징
* JPA는 데이터 베이스를 변경하면 JPA에게 다른 데이터 베이스를 사용한다고 알려주기만 하면 된다.
PS. TODO tistory 마크다운 적용
참고 : 자바 ORM 표준 JPA 프로그래밍
'한달쓰기' 카테고리의 다른 글
한달쓰기 11/30 (0) | 2019.10.25 |
---|---|
한달쓰기 10/30 (1) | 2019.10.24 |
한달쓰기 8/30 (1) | 2019.10.22 |
한달쓰기 7/30 (1) | 2019.10.21 |
한달쓰기 6/30 (1) | 2019.10.20 |