개발강의정리/Spring

[스프링 부트 개념과 활용] 4-10. 스프링 데이터 5부: 스프링 데이터 JPA 소개

nineDeveloper 2019. 11. 20.
728x90

스프링 부트 개념과 활용

4. 스프링 부트 활용

포스팅 참조 정보

GitHub

공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다

해당 포스팅에 대한 내용의 GitHub 주소

실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다

https://github.com/freespringlecture/springboot-concept-uses/tree/chap04-10-05-data-jpa_intro

 

freespringlecture/springboot-concept-uses

백기선님의 스프링 부트 개념과 활용 강의 내용 정리. Contribute to freespringlecture/springboot-concept-uses development by creating an account on GitHub.

github.com

해당 포스팅 참고 인프런 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

스프링 부트 개념과 활용 - 인프런

스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다. 중급 프레임워크 및 라이브러리 Spring Spring Boot 온라인 강의

www.inflearn.com

실습 환경

  • Java Version: Java 11
  • SpringBoot Version: 2.1.2.RELEASE

10. 스프링 데이터 5부: 스프링 데이터 JPA 소개

ORM(Object-Relational Mapping)과 JPA (Java Persistence API)

  • 객체와 릴레이션을 맵핑할 때 발생하는 개념적 불일치를 해결하는 프레임워크
  • http://hibernate.org/orm/what-is-an-orm/
    • 대부분의 JPA SpecHibernate에 기반해서 만들어짐
    • Hibernate의 모든 기능을 JPA가 커버하지는 않음
    • 경우에 따라서는 Hibernate에 관련된 설정을 직접 다루기도 함
    • 그렇게 할 수 있도록 매커니즘을 제공
  • JPA: ORM을 위한 자바 (EE) 표준

ORM에서 다루는 문제들

  • 객체는 크기가 굉장히 다양하지만 테이블은 테이블과 컬럼 밖에 없고 크기가 한정적임
  • 복잡한 객체의 다양한 크기들을 테이블에 맵핑을 시킬 수 있을 것인가에 대한 해결책을 제공
  • 테이블은 상속이 없지만 객체들은 상속이 있음 클래스간에 상속구조를 만들 수도 있고
  • 그런 상속구조를 테이블로는 어떻게 맵핑할 것인가
  • Relational 에서 식별자는 굉장히 단순함
  • Object에서는 IdentityHashcode? equals Method?
  • Object Identity가 같으면 도대체 어떤 Entity가 같아야 우리는 객체가 같다고 해야되는건가?
  • 테이블에서는 식별자만 같으면 같은건데 Object에서는 그게 아님 프로퍼티만 같다고 해서 같은건가?
  • IDnull이면 어떻게 되는거지?

SpringData JPA

JPA 표준 스펙을 아주쉽게 사용할 수 있도록 SpringData로 추상화 시켜놓은 것
아래의 구현체로는 Hibernate를 사용하고 JPA에 있는 Entity Manager 로 감싸서 사용함
SpringData JPA 가 제공하는 Annotation을 사용해서 JPA, Hibernate를 사용하게 됨 Hibernate 아래에는 JDBC가 있음
결국 SpringData JDBC 의 기능을 모두 다 사용할 수 있으면서 부가적으로 JPA, Hibernate, SpringData JPA 기능을 더 사용할 수 있음

  • Repository 빈 자동 생성
  • 쿼리메소드자동구현
  • @EnableJpaRepositories (스프링 부트가 자동으로 설정 해줌.)
  • SDJ(SpringDataJPA) -> JPA -> Hibernate -> Datasource(JDBC)

스프링 데이터 JPA 의존성 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
728x90

댓글

💲 추천 글