-
<Spring JPA> 1.2 JPA 소개JPA 2020. 4. 7. 09:54
두번째 강의를 들었다. 매일 아침 20분 정도를 할애하기로 해서 과연 언제 다 할 수 있을까 라는 생각이 들어서 ...
궁금한 건 일단 찾아봐야겠다고 생각해서 로드맵을 보았다.
일단 커리큘럼은 이러하다.
1. 자바 ORM 표준 JPA 프로그래밍 - 기본편 (54강)
2. 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 (35강)3. 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (23강)
4. 실전! 스프링 데이터 JPA (32강)
5. 실전! Querydsl (41강)보통 한 강의가 20분이니까, 하루 한강의 기준으로 보면 54+35+23+32+41 = 185 가 나온다.
평일 기준으로 월~금이면 일주일에 5번, 185 나누기 5 면 37주.
1년이 52주니까 대충...6-7개월?
아주 만족스러운 커리큘럼이다. 하루 딱 20분만 투자하고, 다른 공부는 따로 할 수 있다는 게 매력적인 것 같다.
일단 여기까지 쓰고 내용을 보자.
오늘은 제목부터 JPA 소개이다. 어제 SQL 이라는 것에 묶여서 개발하는 것이 얼마나 귀찮고 힘든 일인지에 관해 이야기했다. 사실 오늘 JPA 설명을 들으면서 느낀 건, 그래서 그 어려움이 이제 JPA 로서 사라질꺼야! 정도는 아닌 것 같다. JPA 는 그 어려움을 도와줄 수 있는 좋은 도구가 될꺼야 정도로 생각된다.
JPA 는 Java Persistence API 이다. ORM 기술에 대해 자바 진영에서 내놓은 표준이라고 볼 수 있다.
그럼 ORM 이 무엇인가? Object-Relational Mapping 이름만 봐도, 객체 관계 매핑.
사실 자바 개발자가 하면 객체와 관계형 디비 사이에서 하던 sql 매퍼의 역할을 대신 해주는 것으로 받아들일 수 있다.
이렇게 되면 객체는 객체대로 설계하면되고, DB 는 관계형 데이터베이스대로 설계하면 된다는 뜻이다.
그렇게 JPA 는 JAVA 어플리케이션과 JDBC 사이에서 SQL 을 만들어주는 역할을 한다.

출처는 김영한님의 강의자료! 
김영한님의 강의 자료 
김영한님의 강의 자료 JPA 의 역사에 대해서도 간단히 들었는데 굉장히 흥미로웠다. 원래 이러한 목적을 달성하기 위해 기존에 존재하던 것이 자바 진영에서 만든 엔티티 빈이라는 EJB 가 있었다고 한다. 하지만 이게 완전 별로라서 어떤 똑똑한 사람이 하이버네이트라는 걸 만들었다. 그걸 사람들이 많이 쓰니까 자바 진영에서 그 사람을 채용해서 만든 것이 JPA 이다.
이렇게 만들어 졌다보니 JPA 는 사실 인터페이스의 모음이다. JPA 를 구현한 3가지가 있는데 하이버네이트, 이클립스링크, 데이타네큘러스가 있는데 우리는 하이버네이트를 구현한 경우로 공부할 것이다.
다음은 JPA 를 사용하는 경우 이런 장점이 있다는 내용이었다.
기본적인 CRUD 를 자바 코드 만으로 적용가능하니 생산성이 올라간다.
필드 변경 시 관련 SQL 다 수정했어야만 했는데, 그런 거 안해도 된다.
개발자는 자바코드로만 상속을 만들고 마치 컬렉션을 쓰듯이 쓰면 된다. 쿼리는 JPA가 알아서 할 것이다.
동일한 트랜잭션에서 조회한 엔티티는 == 같음을 보장 (그래서 캐시와 같은 역할이지만 사실 성능 상승은 미비)
DB Isolation Level이 Read Commit이어도 애플리케이션에서 Repeatable Read 보장 (커밋된 데이터만 읽어오게 해도 트랜잭션 내에서 같은 데이터 보장)
트랜잭션을 지원하는 쓰기 지연 (말을 어렵게 썼지만, 커밋할 때까지 쿼리 잘 모았다가 한방에 보낸다!)
업데이트나 삭제 커밋도 알아서 타이밍을 잘 조절하여 로우 락 시간을 줄여준다.
지연로딩과 즉시로딩을 지원하여 필요한 스타일로 join 을 제공한다.
써놓고나니까 굉장히 좋아보이는데 강의를 더 듣다보면서 알게 되는 내용이 많을 것 같아서 좋다.
반응형'JPA' 카테고리의 다른 글
<Spring JPA> 1.6 플러시 (0) 2020.04.14 <Spring JPA> 1.5 영속성 컨텍스트 (0) 2020.04.13 <Spring JPA> 1.4 Hello JPA 애플리케이션 개발 (0) 2020.04.09 <Spring JPA> 1.3 Hello JPA 프로젝트 생성 (0) 2020.04.09 <Spring JPA> 1.1 SQL 중심적인 개발의 문제점 (0) 2020.04.06