You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
스프링과 JPA 는 자바 기업 시장의 주력 기술이다.
스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA 는 ORM 데이터 접근 기술을 제공한다.
스프링 + 데이터 접근기술의 조합을 구글 트랜드로 비교했을 때
글로벌에서는 스프링+JPA 조합을 80%이상 사용한다.
국내에서도 스프링 + JPA 조합을 50%정도 사용하고, 2015년 부터 점점 그 추세가 증가하고 있다.
JPA 는 학습할 분량이 많지만, 한 번 배워두면 데이터 접근 기술에서 매우 큰 생산성 향상을 얻을 수 있다. JPA 를 사용하면 SQL 도 JPA 가 대신 작성하고 처리해준다.
실무에서는 JPA 를 더욱 편리하게 사용하기 위해 스프링 데이터 JPA 와 Querydsl 이라는 기술을 함께 사용한다.
스프링 데이터 JPA , Querydsl 은 JPA 를 편리하게 사용하도록 도와주는 도구이다.
2️⃣ ORM 개념1 - SQL 중심적인 개발의 문제점
지금 시대는 객체를 관계형 DB 에 관리하는 시대이다.
SQL 중심적인 개발의 문제점은 무한 반복되는 코드와, 지루한 코드라는 점이다.
계속 동일한 코드를 작성해야하기 때문이다.
하지만, SQL 에 의존적인 개발을 피하기 어렵다 .
객체와 관계형 데이터베이스는 패러다임이 불일치하기 때문이다.
제일 현실적인 대안은 관계형 데이터베이스를 사용하는 것이다.
즉, 개발자는 SQL 매퍼 역할을 해ㅑㅇ한다.
객체와 관계형 데이터베이스의 차이
상속
연관관계
데이터 타입
데이터 식별 방법
계층 분할이 어렵다 !
객체답게 모델링 할수록 매핑 작업만 늘어난다.
객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수 있게 해주는 것이 바로 JPA 이다.
3️⃣ ORM 개념2 - JPA 소개
JPA 는 자바 진영의 ORM 기술 표준이다.
ORM 이란 ?
Object-relational mapping(객체 관계 매핑)
객체는 객체대로 설계
관계형 데이터베이스는 관계형 데이터베이스대로 설계
ORM 프레임워크가 중간에서 매핑
대중적인 언어에는 대부분 ORM 기술이 존재
JPA 는 인터페이스의 모음이며, JPA 2.1 표준 명세를 구현한 3가지 구현체인 하이버네이트, EclipseLink, DataNucleus 가 있으며 하이버네이트를 주로 사용한다.
JPA 를 사용해야 하는 이유
SQL 중심적인 개발에서 객체 중심으로 개발
생산성
유지보수
패러다임의 불일치 해결
성능
데이터 접근 추상화와 벤더 독립성
표준
JPA 의 성능 최적화 기능
1차캐시와 동일성 보장
트랜잭션을 지원하는 쓰기 지연
지연 로딩
ORM 은 객체와 RDB 두 기둥 위에 있는 기술이므로 다 잘 알아야 할 필요가 있다.
4️⃣ JPA 설정
spring-boot-starter-data-jpa 라이브러리를 사용하면 JPA 와 스프링 데이터 JPA 를 스프링 부트와 통합하고, 설정도 아주 간단히 할 수 있다.
build.gradle 에 의존 관계 추가
//JPA, 스프링 데이터 JPA 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
build.gradle 의존 관계 제거
//JdbcTemplate 추가
//implementation 'org.springframework.boot:spring-boot-starter-jdbc'
spring-boot-starter-data-jpa 는 spring-boot-starter-jdbc 도 함께 포함한다. 따라서 해당 라이브러리 의존관계를 제거해도 된다.
참고로 mybatis-spring-boot-starter 도 spring-boot-starter-jdbc 를 포함하기 때문에 제거해도 된다.
hibernate-core : JPA 구현체인 하이버네이트 라이브러리
jakarta.persistence-api : JPA 인터페이스
spring-data-jpa : 스프링 데이터 JPA 라이브러리
위의 라이브러리가 추가된다.
org.hibernate.SQL=DEBUG : 하이버네이트가 생성하고 실행하는 SQL 을 확인할 수 있다.
logging.level.org.hibernate.orm.jdbc.bind=TRACE : SQL 에 바인딩 되는 파라미터를 확인할 수 있다.
-spring.jpa.show-sql=true : 이런 설정도 있는데, 이전 설정은 logger 를 통해서 SQL 이 출력된다. 이 설정은 System.out 콘솔을 통해서 SQL 이 출력되므로 이 설정은 권장하지는 않는다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
1️⃣ JPA 시작
스프링과 JPA 는 자바 기업 시장의 주력 기술이다.
스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA 는 ORM 데이터 접근 기술을 제공한다.
스프링 + 데이터 접근기술의 조합을 구글 트랜드로 비교했을 때
JPA 는 학습할 분량이 많지만, 한 번 배워두면 데이터 접근 기술에서 매우 큰 생산성 향상을 얻을 수 있다. JPA 를 사용하면 SQL 도 JPA 가 대신 작성하고 처리해준다.
실무에서는 JPA 를 더욱 편리하게 사용하기 위해 스프링 데이터 JPA 와 Querydsl 이라는 기술을 함께 사용한다.
스프링 데이터 JPA , Querydsl 은 JPA 를 편리하게 사용하도록 도와주는 도구이다.
2️⃣ ORM 개념1 - SQL 중심적인 개발의 문제점
지금 시대는 객체를 관계형 DB 에 관리하는 시대이다.
SQL 중심적인 개발의 문제점은 무한 반복되는 코드와, 지루한 코드라는 점이다.
계속 동일한 코드를 작성해야하기 때문이다.
하지만, SQL 에 의존적인 개발을 피하기 어렵다 .
객체와 관계형 데이터베이스는 패러다임이 불일치하기 때문이다.
제일 현실적인 대안은 관계형 데이터베이스를 사용하는 것이다.
즉, 개발자는 SQL 매퍼 역할을 해ㅑㅇ한다.
객체와 관계형 데이터베이스의 차이
계층 분할이 어렵다 !
객체답게 모델링 할수록 매핑 작업만 늘어난다.
객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수 있게 해주는 것이 바로 JPA 이다.
3️⃣ ORM 개념2 - JPA 소개
JPA 는 자바 진영의 ORM 기술 표준이다.
ORM 이란 ?
JPA 는 인터페이스의 모음이며, JPA 2.1 표준 명세를 구현한 3가지 구현체인 하이버네이트, EclipseLink, DataNucleus 가 있으며 하이버네이트를 주로 사용한다.
JPA 를 사용해야 하는 이유
JPA 의 성능 최적화 기능
ORM 은 객체와 RDB 두 기둥 위에 있는 기술이므로 다 잘 알아야 할 필요가 있다.
4️⃣ JPA 설정
spring-boot-starter-data-jpa라이브러리를 사용하면 JPA 와 스프링 데이터 JPA 를 스프링 부트와 통합하고, 설정도 아주 간단히 할 수 있다.build.gradle에 의존 관계 추가build.gradle의존 관계 제거spring-boot-starter-data-jpa는spring-boot-starter-jdbc도 함께 포함한다. 따라서 해당 라이브러리 의존관계를 제거해도 된다.참고로
mybatis-spring-boot-starter도spring-boot-starter-jdbc를 포함하기 때문에 제거해도 된다.hibernate-core: JPA 구현체인 하이버네이트 라이브러리jakarta.persistence-api: JPA 인터페이스spring-data-jpa: 스프링 데이터 JPA 라이브러리위의 라이브러리가 추가된다.
application.properties에 설정 추가 (스프링 부트 3.0 이상)main - application.propertiestest - application.propertiesorg.hibernate.SQL=DEBUG: 하이버네이트가 생성하고 실행하는 SQL 을 확인할 수 있다.logging.level.org.hibernate.orm.jdbc.bind=TRACE: SQL 에 바인딩 되는 파라미터를 확인할 수 있다.-
spring.jpa.show-sql=true: 이런 설정도 있는데, 이전 설정은logger를 통해서 SQL 이 출력된다. 이 설정은System.out콘솔을 통해서 SQL 이 출력되므로 이 설정은 권장하지는 않는다.All reactions