본문 바로가기

분류 전체보기146

JPA 테스트 @DataJpaTest persistence layer를 슬라이스 테스트 하기 위한 각종 자동 설정을 지원 복잡한 쿼리 표현을 테스트 TestEntityManager : 테스트 데이터를 주입할 EntityManager를 사용 가능 @AutoConfigureTestDatabase : 테스트용 인메모리 DB를 다른 환경으로 바꿀 때 사용 @JdbcTest : Spring Data 기능 없이 DataSource만 테스트 @DataJdbcTest : DataSource + Spring Data JDBC @DisplayName("DB - 이벤트") @DataJpaTest class EventRepositoryTest { private final EventRepository eventRepository; // Ev.. 2024. 2. 27.
DataSource, TransactionManager DataSource 물리적인 데이터소스(데이터베이스) 정보를 담는 인터페이스 • EmbeddedDatabaseBuilder: HSQL, Derby, H2 등 임베디드 DB 세팅할 때 사용 • DataSourceBuilder: JDBC DataSource 빌더 • DriverManagerDataSource: JDBC 드라이버로 세팅하는 DataSource • SimpleDriverDataSource: DriverManagerDataSource 를 간편하게 만든 버전 • HikariDataSource: HikariCP 를 connection pool 로 사용하는 DataSource TransactionalManager 스프링 트랜잭션 관리 기능을 담당하는 인터페이스 • PlatformTransactionMa.. 2024. 2. 27.
Spring Data JPA 인터페이스 Spring Data JPA 인터페이스 Repository 기본 repository 인터페이스, 어떤 메소드도 제공하지 않는다. CrudRepository Repository + CRUD 기능 제공 PagingAndSortingRepository CrudRepository + 페이징, 정렬 기능 제공 JpaRepository PagingAndSortingRepository + Spring Data JPA repository 전체 기능 @Param 쿼리 메소드 입력 파라미터에 사용하여 애노테이션 기반 파라미터 바인딩 할 때 사용 @Query 직접 JPQL을 작성하고 싶을 때 사용 @NoRepositoryBean 빈으로 등록하고 싶지 않은 인터페이스를 지정할 수 있다. 특정 쿼리 메소드를 기본 메소드로 지정.. 2024. 2. 27.
H2 Database H2 Database 스프링 부트가 지원하는 인메모리 DB JDBC API embedded, server, in-memory 모드 지원 브라우저 콘솔 지원(h2-console) 의존성 추가해서 사용 runtimeOnly 'com.h2database:h2' h2 console spring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:testdb 2024. 2. 26.
Hibernate, Spring Data JPA Hibernate ORM Framework JPA 표준 스펙 구현 고성능, 확장성, 안정성 Spring Data JPA 스프링에서 제공하는 JPA 추상화 모듈 JPA 구현체의 사용을 Repository라는 개념으로 추상화 JPA 구현체의 사용을 감추고 다양한 지원과 설정 방법을 제공 JPA 기본 구현체로 Hibernate 사용 Querydsl 지원 Spring Data JPA 장점 JPA, Hibernate EntityManager를 직접 사용하지 않는다. JPQL을 직접 사용하지 않는다. persist(), merge(), close()를 직접 사용하지 않는다.(EntitiyManager 메소드) 트랜잭션을 getTransation(), commit(), rollback()으로 관리 하지 않는다. 2024. 2. 26.
MyBatis, JdbcTemplate SQL Mapper RDBMS 쿼리문의 실행 결과를 자바 코드에 매핑하는 프레임워크 JDBC API를 사용 영속성 프레임워크 프로그램 코드와 SQL을 분리 MyBatis 영속성 프레임워크 스프링, 스프링 부트와 연동 지원 자바 메소드를 SQL 실행 결과와 매핑 JDBC API(Spring JDBC) jdbc 기반 영속성 프레임 워크 JdbcTemplate Spring JDBC에서 제공하는 템플릿 클래스 쿼리 실행과 결과 전달 기능을 제공 2024. 2. 26.
ORM, JPA, JPQL ORM, JPA, JPQL Object Relational Mapping 객체 지향 언어를 이용하여, 서로 호환되지 않는 타입 간의 데이터를 변환하는 기술 DB(RDBMS) 테이블 데이터를 자바 객체와 매핑하는 기술 RDBMS를 객체 지향 DB로 가상화 DB의 추상화 특정 DB에 종속된 표현(SQL)이나 구현이 사라지고, DB 변경에 더 유연해질 수 있다. 객체의 이점 객체 간 참조 type-safety 관심사 분리 DB 동작에 관한 코드 작성의 반복을 최소화 하고 비즈니스 로직에 집중 Jakarta Persistence API 자바에서 ORM 기술을 사용해 RDBMS를 다루기 위한 인터페이스 표준 명세 API + JPQL + metadata(+ Critical API) 기본적으로 관계형 데이터베이스의 .. 2024. 2. 26.
윈도우 함수 윈도우 함수 행고 행간의 관계를 쉽게 정의해주는 함수 집계함수(AVG, SUM, COUNT), 윈도우 함수 전용 함수(ROW NUMBER, LEAD, LAG) 순위, 합계, 평균, 행 위치 등을 조작 집계 함수 뒤에 OVER()와 함께 사용하면 윈도우 함수, 안사용하면 집계함수 AVG() COUNT() MAX() MIN() SUM() 윈도우 함수 전용 함수 DENSE_RANK() RANK() ROW_NUMBER() LAG() LEAD() 기본 형식 함수(컬럼) OVER (PARTITION BY 컬럼 ORDER BY 컬럼) PARTITION 윈도우 함수에서 group by처럼 쓰이는데, 그룹화의 기준이 되는 컬럼을 파악할 수 있다. ex ) SUM(profit) OVER (PARTITION BY count.. 2024. 2. 25.