1. 의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2. ORM(Object Relational Mapping)
- 객체와 릴레이션을 매핑할 때 발생하는 개념적 불일치를 해결하는 프레임워크
- JPA(Java Persistence API): ORM을 위한 JAVA(EE) 표준
3. 스프링 데이터 JPA
- JPA 표준 스펙을 아주 쉽게 사용할 수 있도록 Spring-Data로 추상화 시켜 놓은 것
- 구현체 : Hibernate
- Spring-Data-JDBC의 기능을 전부 + 부가적인 기능
- 원래는 @EnableJpaReopositories를 사용해서 설정을 해야 spring-data-jpa 사용 가능하지만
해당 부분이 자동설정되기 때문에 필요없음 - Spring Data JPA -> JPA -> Hibernate -> Datasource
- spring-boot-starter-data-jpa 내에 jdbc 포함된 것 확인 가능
-> DataSource, JDBCTemplate 빈으로 등록해줌
-> 부가적으로 spring-data-jpa와 hibernate까지 들어옴
- spring-data-jpa를 보면 spring-orm 확인 가능
4. JPA 슬라이싱 테스트
- 슬라이싱 테스트 : Repository와 관련된 빈들만 등록을 해서 테스트를 만드는 것
- @DataJpaTest 어노테이션 사용
-> DataSource, JdbcTemplate을 빈으로 받을 수 있음 - embedded(인-메모리) 데이터베이스가 반드시 필요함
없을 경우 아래와 같이 "IllegalStatementException" 발생
5. @DataJpaTest VS @SpringBootTest
test scope으로 지정한 h2와 test scope을 지정하지 않은 postgresql이 있을 때
① @DataJpaTest -> h2
② @SpringBootTest -> postgresql
-> Integration Test
@SpringBootApplication 어노테이션을 찾아서 어플리케이션에 있는 모든 빈을 다 등록하고,
application.properties도 적용이 되기 때문에 postgresql로 실행됨
느리고, Test용 DB가 필요하기 때문에 Test 실행 시 Embedded DB 사용할 것 권장
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
스프링 부트 개념과 활용 - 인프런 | 강의
스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
http://hibernate.org/orm/what-is-an-orm/
What is Object/Relational Mapping? - Hibernate ORM
Idiomatic persistence for Java and relational databases.
hibernate.org
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] 데이터베이스 마이그레이션 - Flyway (0) | 2022.04.17 |
---|---|
[Spring Boot] 데이터베이스 초기화 (0) | 2022.04.17 |
[Spring Boot] Postgre SQL (0) | 2022.04.10 |
[Spring Boot] MySQL 설정하기 (0) | 2022.04.10 |
[Spring Boot] 인-메모리 데이터베이스 (0) | 2022.04.10 |