분류 전체보기 1341

Ch06. 스프링 DB 접근 기술 - SpringDataJPA

주의: 스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술입니다. 따라서 JPA를 먼저 학습한 후에 스프링 데이터 JPA를 학습해야 합니다. SpringJPAData가 알아서 JpaRepository를 상속받을 때, memberRepository를 Bean으로 등록하여 준다. 따라서 설정파일에선 빈으로 등록된 Repository만 가지고 와서 서비스에 주입해주면 된다. JpaRepository가 공통적으로 제공되는 함수를 제공해 준다. 단, 비지니스비즈니스 코드가 모두 다르기 때문에 비즈니스 관련 칼럼 같은 경우 공통화가 불가능하다(ex) name 메서드를 만들 때, 규칙을 지켜서 만들도록 설계한다.( 메소드 이름으로 JPQL 생성) 메서드를 만드는 시점부터 쿼리를 SpringJpaData..

스프링 입문 2021.12.01

Ch06. 스프링 DB 접근 기술 - JPA

SQL을 직접 개발자가 작성해야 되는 문제가 있었다 JPA를 사용하면 SQL을 개발자가 직접 작성하지 않아도 작성해준다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. JPA를 사용하면 개발 생산성을 크게 높일 수 있다 https://pravusid.kr/java/2018/10/10/spring-database-initialization.html Spring에서 JPA / Hibernate 초기화 전략 · ID PRAVUS Spring-data-JPA와 DBMS를 연결해서 사용할 때 간편히 개발환경의 변경사항을 적용하여 테스트 할 수 있다. 특히 테스트를 위한 in-memory Database인 H2 Database를 염두에 둔 DB 초기화 전략에..

스프링 입문 2021.12.01

Ch06. 스프링 DB 접근 기술 - 스프링 JdbcTemplate

순수 jdbc와 동일한 환경설정을 하면 된다. JDBC API에서 본 반복 코드 대부분을 제거해 준다 단, SQL 같은 경우 똑같이 작성해 주어야 한다. public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; //생성자가 딱 하나만 있을경우 @Autowire 를 생략할 수 있다. public JdbcTemplateMemberRepository(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override public Member save(Member member) { S..

스프링 입문 2021.12.01

Ch06. 스프링 DB 접근 기술 - 스프링 통합 테스트

실제 데이터가 DB에 잘 들어가고 접속이 잘 되는지 테스트를 진행해야 된다. 이전에는 순수한 JAVA Code를 실행하는 단위 테스트였다. 단위 테스트 설계를 잘할 경우 통합 테스트보다 좋은 성능으로 빠르게 테스트를 완료할 수 있지만 통합 테스트가 필요한 시기가 존재하므로 통합테스트 진행법도 알아야 한다. @Transactional//Test를 실행할때 Transactional어노테이션을 달게 되면 DB에 실제 넣지 않고 Test를 실행한뒤, 롤백해준다. @SpringBootTest//스프링 테스트를 위한 어노테이션 class MemberServiceIntegrationTest { //테스트 케이스같은 경우 다른데에서 가져다 쓰는것이 아니기 때문에 굳이 생성자를 통한 주입을 받을 필요는 없다 @Autow..

스프링 입문 2021.12.01

Ch06. 스프링 DB 접근 기술 - 순수 JDBC

오래전에 사용한 JDBC 기술 살펴보기 build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가 application.properties에 DB 관련 내용을 추가 Spring 2.4 이후 버전부터는 반드시 username을 명시하도록 되어있다( 없을 경우 Wrong user name or password 오류가 발생) 순수 JDBC public class JdbcMemberRepository implements MemberRepository{ //DB접근하기위한 DataSource private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource) { this.dataSource = dataS..

스프링 입문 2021.12.01

Ch06. 스프링 DB 접근 기술 - H2 데이터베이스 설치

개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 https://www.h2database.com H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo www.h2database.com 설치 후, 실행하면 해당 페이지가 나오는 데, URL만 l..

스프링 입문 2021.12.01

Ch04. 스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록하기

직접 설정 파일을 등록해서 스프링 빈으로 등록하기 직접 Configuration 어노테이션을 붙여 빈으로 등록할 클래스임을 명시하여 주고 @Bean으로 빈을 등록한다. DI 주입에는 필드 주입, setter 주입, 생성자 주입 세 가지가 있다. 생성자 주입 = 생성자로 의존성을 넣어준다. 필드 주입 memberService를 중간에 바꿀수 있는 방법이 없어서 선호하지 않는다( Mock 객체로 변환하여 Test 하기 힘들다) setter주입 처음 세팅이 되면은 변경될 일이 없지만 public으로 노출되어 있기 때문에 변경될 위험이 있다. 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다. 그리고 정형화되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 ..

스프링 입문 2021.11.27