본문 바로가기

개발 관련 공부139

08 Spring Data JPA 활용 JPQL JPQL은 jpa query language의 줄임말로 sql과 거의 비슷하게 생겼으나, 테이블 대신 엔티티 이름이 들어간다. (그야 jpa는 엔티티 이름을 기반으로 테이블을 생성하니... 개인적으론 거의 sql과 똑같이 느껴진다.) SELECT p FROM Product p WHERE p.number=1; 이런식으로 되어있는게 JPQL이다. 쿼리 메서드 살펴보기 이런 JPQL을 어떻게 작성할 수 있느냐...하면, 일단 리포지토리는 JpaRepository를 상속받는 것만으로도 다양한 CRUD 메서드를 제공한다. findById 같은... 그리고 이 기본 메서드를 호출하면 jpql이 알아서 생성돼서 쿼리문을 수행한다. public interface ProductRepository extends .. 2024. 1. 6.
07 테스트 코드 작성하기(3) JUnit을 활용한 테스트 코드 작성 리포지토리 객체의 테스트 리포지토리는 JpaRepository를 상속받아 기본적인 쿼리 메소드를 사용할 수 있다. findById 같은 리포지토리의 기본 메서드는 이미 테스트 검증을 마치고 제공되었으므로 기본 메서드에 대한 테스트는 큰 의미가 없다. db에 테스트용 데이터가 쌓이면 곤란하다. 그러므로 테스트용 db를 쓰거나 아예 db 연동 없이 테스트 하는 편이 나을 수도 있다. 테스트 폴더 내에 ProductRepositoryTest 를 만들자. @DataJpaTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class ProductRepositoryTest { @Aut.. 2023. 12. 31.
07 테스트 코드 작성하기(2) 11월말..12월초 너무 바빴다..ㅠㅠ 오랜만에 작성하는 스프링부트 시리즈 JUnit을 활용한 테스트 코드 작성 컨트롤러 객체의 테스트 예를들어 productController의 테스트를 하고싶다... 그러면 test 폴더 아래에 ProductControllerTest 를 만들어야 한다. @WebMvcTest(ProductController.class) class ProductControllerTest { @Autowired private MockMvc mockMvc; // ProductController에서 잡고 있는 Bean 객체에 대해 Mock 형태의 객체를 생성해줌 @MockBean ProductServiceImpl productService; // 예제 7.6 // http://localhost.. 2023. 12. 24.
07 테스트 코드 작성하기(1) 단위 테스트와 통합 테스트 단위 테스트. 일반적으로 메서드 단위로 수행하는 작은 단위의 테스트 통합 테스트: 호환성 등을 포함해 어플이 정상적으로 동작하는지 통합적으로 확인하는 테스트 테스트 코드를 작성하는 방법 Given-When-Then 패턴 Given: 테스트에 필요한 환경 설정 When: 테스트의 목적을 보여줌 Then: 테스트의 결과를 검증 이 패턴은 간단한 테스트로 여겨지는 단위 테스트에서는 잘 사용하지 않는다. 하지만 이걸로 테스트 코드를 작성하면 명세 문서의 역할을 수행한다는 점에서 도움이 된다. 좋은 테스트를 작성하는 5가지 속성 빠르게: 느리면 개발 속도도 느려짐 고립된: 하나의 테스트는 목적으로 여겨지는 하나의 대상에 대해서만 수행돼야 한다. 반복 가능한: 어떤 환경에서도, 개발 환경.. 2023. 11. 12.
06 데이터베이스 연동(3) 서비스 클래스 만들기 먼저 dto를 만들고 서비스 클래스들을 만들자. entity와 dto 둘 다 객체인데.. 클라와 가까운 레이어에서는 dto를 사용하고 db와 가까운 레이어에서는 entity를 사용하는 것이 일반적이다. 단 회사 내 규정에 따라 얼마든지 바뀔 수 있는 사항 인 것 같다. 어쨌든 서비스 클래스를 만든다. public interface ProductService { ProductResponseDto getProduct(Long number); ProductResponseDto saveProduct(ProductDto productDto); ProductResponseDto changeProductName(Long number, String name) throws Exception; voi.. 2023. 10. 28.
06 데이터베이스 연동(2) 데이터베이스 연동 pom.xml에 마리아db, jpa 추가하고 application.properties에 db 연결 정보를 추가한다. spring.datasource.driverClassName=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:3306/springboot spring.datasource.username=flature spring.datasource.password=aroundhub12# spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.show-s.. 2023. 10. 14.
반응형