본문 바로가기
반응형

Study53

[Spring Boot] JPA로 JdbcTemplate 대체하기 Intro JPA는 Java Persistence Api의 약자로, SQL을 직접 작성하지 않고도 객체를 통해 DB를 구성해준다. JPA를 사용하면 SQL과 데이터 중심 설계에서 객체 중심 설계로 패러다임 전환이 가능하기 때문에 개발 생산성을 크게 높일 수 있다. JPA 테스트케이스 작성 JPA를 사용하기 위해 Dependency를 추가해주자. JPA에서 JDBC를 포함하기 때문에 원래 있던 JDBC Dependency를 지우고 아래의 코드를 넣어주면 된다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' //implementation 'org.springframework.boot:spring-boo.. 2022. 2. 15.
[Spring Boot] 스프링 통합 테스트 케이스 만들기 Intro 이전에 JdbcTemplate를 이용해 데이터를 메모리가 아닌 DB에 접근하도록 변경했다. 그렇기 때문에 기존의 테스트는 스프링과 상관없이 순수 Java 코드를 이용한 테스트였는데, 이제부터는 DB 서버 URL, 설정 등을 스프링이 갖고 있기 때문에 서버를 올려 테스트를 진행해야 한다. 테스트 케이스 작성 우선 서비스의 기능은 같기 때문에 이전에 만들었던 MemberServiceTest를 복사해서 가져오자. MemberServiceIntegrationTest.java package com.devjaewoo.hellospring.service; import com.devjaewoo.hellospring.domain.Member; import com.devjaewoo.hellospring.repo.. 2022. 2. 15.
[Spring Boot] JdbcTemplate로 MemoryRepository 대체하기 Intro 데이터가 메모리에 저장돼 서버를 껐다 켜면 데이터가 날아가는 현상을 방지하기 위해 JdbcTemplate를 사용할 것이다. JdbcTemplate를 사용하면 기존 JDBC의 반복 코드를 대부분 제거해 SQL과 결과 처리에 집중할 수 있도록 지원해준다. JDBCTemplate 적용 JdbcTemplate를 사용하기 위해 gradle 파일에 JDBC를 implement 해줘야 한다. build.gradle dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-jdbc' ... } 이제 MemberRepository를 구현하는 JdbcTemplateMemberRepository 클래스를 만들고, JdbcTemp.. 2022. 2. 14.
[Spring Boot] h2 Database 설정하기 h2 Database 설정하기 DB 접근 코드를 작성하기에 앞서 h2 DB부터 설치해주자. 우선 gradle에서 h2 관련 dependency를 추가한다. build.gradle dependencies { ... runtimeOnly 'com.h2database:h2' ... } 이제 DB 서버를 열 차례다. 아래의 사이트에서 다운로드 받거나, application.yml (application.properties)를 수정해서 서버를 열 수 있다. 난 다운로드 받지 않고 application.yml을 조금 더 수정하는 방식으로 했다. https://www.h2database.com H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the f.. 2022. 2. 14.
[Spring Boot] h2 DB에 TCP 접근 시 SocketTimeoutException 뜰 때 h2 DB SocketTimeoutException 해결방법 h2 콘솔에서 JDBC URL에 TCP를 넣어 연결할 경우 Timeout이 발생하는 경우가 있다. h2 Database가 기본적으로 TCP 연결을 허용하지 않아 생기는 오류로, 서버가 열릴 때 아래의 같이 TCP 관련 옵션을 추가해서 열어주도록 하면 해결된다. java -jar .\hello-spring.jar -tcp -tcpAllowOthers 2022. 2. 14.
[Spring Boot] 회원가입, 회원조회 기능 구현 회원가입, 회원조회 기능 구현 MemberController에 Service 의존성 주입을 해줬으니 이제 View를 구현해야 한다. 아래와 같이 name을 /members/new에 POST로 보내는 form을 하나 작성했다. /templates/members/createMemberForm.html 이름: 이제 사용자가 /members/new에 접근하면 이전에 작성한 form을 보여주도록 mapping 해주자. package com.devjaewoo.hellospring.controller; import com.devjaewoo.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; im.. 2022. 2. 13.
[Spring Boot] 의존성 주입과 스프링 빈 등록 의존성 주입과 스프링 빈 등록 DB에 사용자 정보를 넣고 빼기 위해 Service와 Repository를 만들었다. 이제 웹을 통해 접근할 수 있도록 Controller를 만들어줘야 한다. MemberController.java package com.devjaewoo.hellospring.controller; import com.devjaewoo.hellospring.repository.MemoryMemberRepository; import com.devjaewoo.hellospring.service.MemberService; import org.springframework.stereotype.Controller; @Controller public class MemberController { } 이제 S.. 2022. 2. 13.
[Spring Boot] Service와 테스트 케이스 만들기 Service 만들기 Repository가 단순히 DB에 데이터를 넣고 꺼내는 역할을 수행한다면, Service는 비즈니스 로직을 처리하는 역할을 한다. 간단하게 말하자면 DB에서 받아온 데이터를 가공하는 것으로, DB에 판매 가격만 저장되어 있을 때 판매 가격에서 부가세가 얼마나 나왔는지 계산해 사용자에게 보여주는 것과 비슷하다. MemberService.java package com.devjaewoo.hellospring.service; import com.devjaewoo.hellospring.domain.Member; import com.devjaewoo.hellospring.repository.MemberRepository; import java.util.List; import java.util.. 2022. 2. 13.
[Spring Boot] Repository와 테스트 케이스 만들기 Repository 만들기 Repository는 기본적으로 Entity를 DB에 저장하고 불러오는 작업을 한다. 현재 어떤 DB를 사용할지 결정이 되지 않았고, 테스트용 Repository를 선언해 개발을 진행하다가, DB가 결정되면 해당 Repository로 갈아 끼기로 한 시나리오라고 가정하자. 우선 나중에 Repository를 구현체만 바꿔서 갈아 끼울 수 있도록 동일한 인터페이스를 갖도록 하기 위해 Repository에 들어갈 함수들을 모아놓은 인터페이스를 정의해야 한다. Repository들을 모아놓을 repository 패키지를 생성하고, 그 안에 아래의 코드를 작성한다. MemberRepository.java package com.devjaewoo.hellospring.repository; .. 2022. 2. 13.
반응형