한달쓰기

한달쓰기 9/30

ljh3259 2019. 10. 23. 23:41
반응형

한달쓰기 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 프로그래밍


반응형