https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
ㅇ 스프링 데이터
ㅁ 스프링 데이터 : 인메모리 데이터베이스
- 인메모리 데이터베이스로 h2 사용 (추천)
- spring-boot-starter-jdbc 가 좋음
- jdbc api 사용 보다는 jdbc templete 사용 하는게 더 좋음
> try catch 처리나, 리소스 반납이 훨씬 잘됨
- testdb 로 만들고 싶으면, spring.datasource.generate-unique-name=false 를 application.properties에 설정
ㅁ MySQL & PostgreSQL
- dbcp (DataBase Connection Pool)
> DB 커넥션을 미리 만들어놓아서 사용에 편리하게 함
> 몇개를 풀에 유지하고 있을것이냐, 얼마나 유지할 것이냐 등등
> db connection이 어플리케이션의 성능에 핵심적인 역할을 함
> 디버깅 하기도 힘듬
> 신중히 고려 후 선택해야함 ( 설정, 성능 등 )
- SpringBoot는 HikariCP 를 Default DBCP 로 선정
- 기본 : 커넥션 개체 10개, 타임아웃 30초
> application.properties에 설정
> spring.datasource.hikari.maximum-pool-size=4
- mysql 연결 구현체 추가 ( pom.xml)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
- spring.datasource.url=jdbc:mysql://localhost:3306/springboot 추가 및 username, password 추가하여 접속
- PostgreSQL 연결도 위와 비슷
> docker 실행 문제 해결 : https://jinseongsoft.tistory.com/309
- intelliJ 에서 DBMS 를 제공해준다. (엔터프라이즈 버전)
ㅁ JPA
- 메이븐 자동빌드 관련
> https://developia.tistory.com/6
- SpringData JPA -> JPA -> Hibernate -> DataSource
- @DataJpaTest 란?
> 슬라이싱 테스트 annotation 임
: 지금 repository와 관련된 bean (repository 포함) 만 포함해서 테스트 진행
> @SpringBootTest annotation을 붙이면 모든 빈을 등록함 ( 통합 테스트 )
- 테스트용 디비를 구축하여 테스트하기에는 좋지않음 ( 권장하지 않음 )
- 비어있는 테스트 실행시, 빈이 잘 등록되는지 확인 할 수 있음
- jpa 테스트 시, db가 없으니 오류가 남 (test scope으로 임베디드 h2 추가함)
- jpa에서 쿼리 쓰기
> @Query에서 nativeQuery = true
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
public interface AccountRepository extends JpaRepository<Account, Long> {
@Query(nativeQuery = true, value="select * from account where username='{0}'")
Account findByUsername(String username);
}
- 자동으로 스키마 생성하기 (application.properties)
> spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
> spring.jpa.hibernate.ddl-auto=validate
는 검증만 함 ( 운영용 상황 )
> 엔티티속성 명칭 변경은 hibernate가 자동으로 못함
- resource 밑에 schema.sql 생성하면 실행시 자동으로 실행됨 ( 스키마 자동 생성 )
- flaywaydb 를 통해 sql 스키마 구조를 버전 관리 할 수 있다.
- redis
> CrudRepository 상속 - 스프링 데이터에 아주 기본적인 최상위 Repository 인터페이스
> @RedisHash 사용
> 해쉬값 저장된건 hgetall or hget 통해 확인 가능
- mongodb
> @Document(collection = "accounts")
> 내장형 몽고디비가 있어서 테스트 쉽게 가능
>> <dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<scope>test</scope>
</dependency>
>> @DataMongoTest 로 슬라이싱테스트 가능
- Neo4j
> 실습 x
> 관계형 데이터를 표현하기 좋음 (graph)
'Spring' 카테고리의 다른 글
[Spring] 스프링 부트 업데이트 - 1 (0) | 2021.07.20 |
---|---|
[Spring] 스프링 부트 개념과 활용 - 4 (0) | 2021.07.19 |
[Spring] 스프링 부트 개념과 활용 - 2 (0) | 2021.07.10 |
[Spring] 스프링 부트 개념과 활용 - 1 (0) | 2021.07.10 |
[Spring] 스프링 프레임워크 핵심 기술 정리 - 2 (0) | 2021.07.05 |