전체 글 211

5. 데이터 접근 기술 - JPA

1. JPA 설정 spring-boot-starter-data-jpa 라이브러리 JPA와 spring data JPA를 springboot와 통합하고, 설정도 간단히 할 수 있다. spring-boot-starter-jdbc를 포함(의존)한다. mybatis-spring-boot-starter도 spring-boot-starter-jdbc를 포함 추가되는 library hibernate-core : JPA 구현체인 하이버네이트 라이브러리 jakarta.persistence-api : JPA 인터페이스 spring-data-jpa : 스프링 데이터 JPA 라이브러리 build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spr..

framework/spring 2023.09.29

spring 설정 파일 : web.xml , servlet-context, root-context

1. web.xml web.xml은 Was(ex : Tomcat)가 처음 실행할 때 web.xml 파일을 제일 먼저 읽고 거기에 정의된 구성대로 프로젝트를 설정해준다. 쉽게 말하자면 내 Spring project의 구성을 설정하는 파일이고 제일 먼저 설정되는 파일 web.xml 내부에서 spring 관련 설정 파일로 servlet-context.xml, root-context.xml 이 존재 contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener encodingFilter org.springframework.web.filter.CharacterEncodingFilte..

framework/spring 2023.09.29

4. 데이터 접근 기술 - MyBatis(springboot, gradle)

1. MyBatis 소개 JdbcTemplate 보다 더 많은 기능을 제공하는 SQL Mapper JdbcTempate이 제공하는 대부분의 기능을 제공 SQL을 XML에 편리하게 작성 및 동적 쿼리를 매우 편리하게 작성 가능 project에서 동적 쿼리와 복잡한 쿼리가 많을 시 MyBatis를 사용하고, 단순 쿼리가 많을 시, JdbcTemplate을 선택해서 사용하면 된다. MyBatis 공식 사이트 : https://mybatis.org/mybatis-3/ko/index.html 현재 수행하는 MyBatis 방식은 spring boot에서 권장하는 방식 1.1. spring(maven)에서 spring boot(gradle)에서 Mybatis 사용방법 차이점 spring - maven pom.xml ..

framework/spring 2023.09.29

springboot - embedded mode H2 test 방법

1. test - 임베디드 모드 db 사용 이유 test case를 실행하려고 별도의 db를 설치하고, 운영하는 것이 비효율적 단순 검증 용도로 사용하므로 test 종료시 db의 data를 모두 삭제해도 된다. 더해서 test 종료시, db 자체를 날려도 된다. 임베디드 모드 H2 db는 java로 개발 되어있고 JVM 안에서 memory 모드로 동작한느 특별한 기능 제공 app 실행할 때 H2 데이터베이스도 해당 JVM 메모리에 포함해서 함께 실행 하 수 있다. db를 app에 내장해서 함께 실행한다고 Embedded mode라고 한다. app 종료시, embedded mode로 동장하는 H2 db도 함께 종료되고 data도 모두 사라진다. = java libarary처럼 동작한다. 수동, 자동 공통 ..

TDD/JUnit5 2023.09.25

임베디드(= 메모리) 데이터 베이스

1. test - 임베디드 모드 db 사용 이유 test case를 실행하려고 별도의 db를 설치하고, 운영하는 것이 비효율적 단순 검증 용도로 사용하므로 test 종료시 db의 data를 모두 삭제해도 된다. 더해서 test 종료시, db 자체를 날려도 된다. 임베디드 모드 H2 db는 java로 개발 되어있고 JVM 안에서 memory 모드로 동작한느 특별한 기능 제공 app 실행할 때 H2 데이터베이스도 해당 JVM 메모리에 포함해서 함께 실행 하 수 있다. db를 app에 내장해서 함께 실행한다고 Embedded mode라고 한다. app 종료시, embedded mode로 동장하는 H2 db도 함께 종료되고 data도 모두 사라진다. = java libarary처럼 동작한다. 수동, 자동 공통 ..

DB/sql 2023.09.25

@Test - @Transactional 적용

1. test - data rollback spring db 1 에서 학습한 transactionManger과 status를 이용하여 status가 true, false 상관 없이 무조건 rollback하도록 @BeforeEach @AfterEach 사용 @BeforeEach 수행 부터 @AfterEach 오기전까지 동일 connection을 사용하는 transaction 수행됨 package hello.itemservice.domain; @SpringBootTest class ItemRepositoryTest { // DataSource와 txManger는 springboot에서 자동으로 생성해놓았다. @Autowired ItemRepository itemRepository; //tx 관련 code @..

TDD/JUnit5 2023.09.25

@test용 db 분리

1. 테스트 - 데이터베이스 연동 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 과정이 필요 test case는 src/test에 있기 때문에, test 실행시 src/test 내부 application.properties 파일이 우선순위를 가지고 실행 해당 설정 파일에도 spring.datasource.url 같은 db 연결 설정 필요 만약 main의 application.properties의 설정을 그대로 사용하고 싶으면 test/resources 패키지에 application.properties 파일 자체가 존재하지 않아야 사용 가능 1.1. h2 db datasource 설정 등록 test/resources/application.properties..

TDD/JUnit5 2023.09.25

3. 데이터 접근 기술 - 테스트

1. 테스트 - 데이터베이스 연동 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 과정이 필요 test case는 src/test에 있기 때문에, test 실행시 src/test 내부 application.properties 파일이 우선순위를 가지고 실행 해당 설정 파일에도 spring.datasource.url 같은 db 연결 설정 필요 만약 main의 application.properties의 설정을 그대로 사용하고 싶으면 test/resources 패키지에 application.properties 파일 자체가 존재하지 않아야 사용 가능 1.1. h2 db datasource 설정 등록 test/resources/application.properties..

framework/spring 2023.09.25

4. SpringBootApplication 설정, @Import, Profile, @EventListener

1. bootApplication 설정 configFile : 수동 bean 등록 file testDataInit : 초기 test file @EventListener(ApplicationReadyEvent.class) @PostConstruct bootApplication @Import @SpringBootApplication(scanBasePackages = "") app 내부 @Bean, @Profile("") application.properties main : local test : test 해당 파일 code package hello.itemservice.config; @Configuration public class MemoryConfig { @Bean public ItemService it..

framework/spring 2023.09.24

⭐️ 3. Domain 이름 규칙 및 Domain package 위치

1. 패키지 구조 2. Domain ItemSearchCond & ItemUpdateDto 두개 파일 모두 DTO를 의미 팀 내, 규칙으로 파일명 설정 Cond같은 경우 목적이 검색조건 data를 넘겨 주는 것이기 때문에 dto이긴 하지만 Cond로 합의 나머지 data 이동 Domain은 끝에 Dto 붙이는 규칙 설정 완전 핵심 dto의 경우 딱 이름만 씀 Dto(data transform object) 데이터 전송 객체 기능은 없고 data를 전달만 하는 용도록 사용되는 객체 Dto 위치 최종적으로 사용하는 단계에 위치 시킴. ex) 회원 조회시, 처음으로 data를 dto에 저장하는 위치는 repository. 따라서 repository에 dto를 위치시킴 애매한 경우, Domain 폴더를 따로 두..

framework/spring 2023.09.24