스프링 부트와 JPA라는 기반 위에, 스프링 데이터 JPA를 사용하면리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있습니다.따라서 개발자는 핵심 비즈니스 로직을 개발하는데, 집중할 수 있습니다. 이전의 JPA 설정을 그대로 사용하고.. SpringDataJpaMemberRepository>> package hello.hellospring.repository;import hello.hellospring.domain.Member;import org.springframework.data.jpa.repository.JpaRepository;import java.util.Optional;public interface SpringDataJpaMemberRepository extends JpaRe..
JPA와 MyBatis 두 개를 놓고 보면,외국에선 MyBatis에 비해 JPA가 압도적으로 사용량이 많습니다.한국은 반대지만, 그 추세가 바뀌고 있다고 하더라고요..그래서 왜 같은 DB 접속 기술인데 JPA를 사용하는지 궁금했어요..JPA와 더 친해지고 싶어서.. 게시판을 하나 만들어봤어요..만들다 보니 조금은 알겠더라고요 쿼리문을 직접 안 써도 된다는 장점이 얼마나 큰지..!!서론이 길었네요.. 먼저 결과부터 보자면..Create>> Read(Delete)>> Update>> 요구사항으론 Create, Read, Update, Delete 기능이 있는 게시판입니다.. 예상되는 로직은..요청 -> Controller -> Service -> Dao -> Service -> Controller -> ..
JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해 줍니다..SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있습니다..또한 개발 생산성을 크게 향상시킵니다.. 바로 JPA를 사용해 보죠먼저 bungle.gradle 파일에 JPA와 DB 관련 라이브러리를 추가합니다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 저는 기존에 쓰던 JDBC 라이브러리를 주석 처리하고 H2 데이터베이스를 사용했습니다.추가하고 꼭 Gradle을 새로고침 해주셔야 됩니다.. application.properties에선 JPA 설정을 추가해 줍니다. spring.jpa.show-sql=tr..
스프링 JDBCTemplate는 기존의 JDBC와 동일한 환경설정을 해줍니다.JDBCTemplate나 Mybatis와 같은 라이브러리는 JDBC의 반복 코드를 대부분 제거해 줍니다.하지만 쿼리문은 직접 작성해 줘야 됩니다.. 개방-폐쇄의 원칙에 따라..기존에 MemberRepository 인터페이스를 JdbcMemberRepository를 구현체로 사용했다면JdbcTemplateMemberRepository를 구현체로 한 개 더 만든 뒤,스프링 빈 객체로 사용하도록 할게요.. JdbcTemplateMemberRepository>> package hello.hellospring.repository;import hello.hellospring.domain.Member;import org.springframe..
이전에 단위 테스트를 했다면,이번엔 스프링을 실제로 띄우고 DB 연동까지 하는 통합 테스트를 해보겠습니다..순수 자바 코드를 통해서 테스트를 하지 않고 스프링을 구동해야 되는 경우@SpringBootTest 어노테이션을 사용합니다.그리고 테스트 과정에서 쿼리문을 실제 commit 시키지 않고 테스트가 끝난 뒤에 Rollback시키려면@Transactional 어노테이션을 사용합니다. MemberServiceIntegrationTest>> package hello.hellospring.service;import hello.hellospring.domain.Member;import hello.hellospring.repository.MemberRepository;import org.assertj.core.a..
개방-폐쇄의 원칙(OCP, Open-Closed Principle)란, 확장에는 열려있고 수정 및 변경에는 닫혀있습니다.무슨 뜻이냐면..이때까지 회원관리 프로젝트를 하면서 데이터베이스가 정해지지 않은 상태에서 개발을 하게 되어서메모리에 회원정보를 저장시켰는데, 이 저장하는 부분을 메모리가 아닌 DB로 변경하겠다는 곳에 있습니다.변경을 하는 과정에서, DI를 이용하여 기존 코드에는 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있습니다. 기존에 MemberService에서 MemberRepository 인터페이스에구현체가 MemoryMemberRepository가 있었다면, 이건 놔두고구현체를 JDBCMemberRepository를 만들어줘서 스프링 빈으로 사용할 겁니다. 먼저, build.gra..