본문 바로가기

Back-End173

[스프링 DB 접근 기술] 스프링 데이터 JPA 이 글은 김영한 님의 스프링 입문 강의(https://inf.run/hcic)를 수강하며 학습한 내용을 정리한 글입니다. 스프링 부트와 JPA만 사용해도 개발 생산성이 증가하고, 개발해야 할 코드도 확연히 줄어든다. 리포지토리에 구현 클래스 없이 인터페이스만으로 개발 가능하다. 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다. 단순하고 반복이라 생각했던 개발 코드들이 확연하게 줄어들어서 개발자는 핵심 비즈니스 로직 개발에 집중할 수 있다. ※ 스프링 데이터 JPA: JPA를 편리하게 사용하도록 도와주는 기술 1. 회원 리포지토리 인터페이스가 JpaRepository를 상속받고 있으면 스프링 데이터 JPA가 구현체를 자동으로 만들어 주고, 스프링 빈에 등록해 준다. //인터페이스가 인터페이스를 .. 2022. 3. 2.
[스프링 DB 접근 기술] JPA 이 글은 김영한 님의 스프링 입문 강의(https://inf.run/hcic)를 수강하며 학습한 내용을 정리한 글입니다. JPA 기본적인 SQL을 JPA가 직접 만들어서 실행해 준다. JdbcTemplate은 순수 Jdbc 소스 코드보다 단순하지만 SQL은 직접 작성해야 한다는 불편함이 있다. SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다 개발 생산성을 크게 높일 수 있다 1. build.gradle spring-boot-starter-data-jpa는 내부에 jdbc 관련 라이브러리를 포함한다. // implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springf.. 2022. 3. 1.
스프링 DB 접근 기술 - 스프링 JdbcTemplate 이 글은 김영한 님의 스프링 입문 강의(https://inf.run/hcic)를 수강하며 학습한 내용을 정리한 글입니다. 스프링 JdbcTemplate ˙ 순수 Jdbc와 동일한 환경설정 ˙ 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해 준다 하지만 SQL은 직접 작성해야 한다 1. JdbcTemplateMemberRepository MemberRepository 구현 private final JdbcTemplate jdbcTemplate; // @Autowired 생성자가 하나라면 생략 가능 public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new J.. 2022. 3. 1.
스프링 DB 접근 기술 - 스프링 통합 테스트 이 글은 김영한 님의 스프링 입문 강의(https://inf.run/hcic)를 수강하며 학습한 내용을 정리한 글입니다. 스프링 컨테이너와 DB까지 연결한 통합 테스트 이전에 했던 테스트들은 순수한 자바 코드를 테스트한 것이다 이번 포스트에서는 DB를 스프링 부트가 관여하고 있으므로 이를 고려한다 1. DB를 연결한 로직을 테스트하기 위한 테스트 파일 생성 MemberServiceTest 파일을 복사 붙여넣기 하여 MemberServiceIntegrationTest 생성 2. 스프링 부트를 통한 테스트 클래스 앞에 어노테이션을 붙여 준다 @SpringBootTest 스프링 컨테이너와 테스트를 함께 실행한다 @Transactional 테스트 케이스에 이 애노테이션이 있으면, 테스트 시작 전에 트랜잭션을 시.. 2022. 3. 1.
스프링 DB 접근 기술 - 순수 JDBC 보호되어 있는 글 입니다. 2022. 2. 27.
스프링 DB 접근 기술 - H2 데이터베이스 설치 이 글은 김영한 님의 스프링 입문 강의(https://inf.run/hcic)를 수강하며 학습한 내용을 정리한 글입니다. 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 1. h2 데이터베이스 1.4.200 버전 설치 2. 데이터베이스 파일 생성 ~/: 홈 디렉토리(사용자 폴더의 UserName 폴더)를 말한다 2-1 이후부터는 jdbc:h2:tcp://localhost/~/test로 접속한다 파일로 접근할 경우 애플리케이션과 앱 콘솔이 충돌에 의해 동시에 접근이 불가할 수 있기 때문이다 여러군데서 접근할 수 있도록 파일에 직접 접근하지 않고 소켓을 통해서 접근하도록 한다 테이블 생성하기 bigint: Java에서 Long타입 generated by default as identity: 값을 .. 2022. 2. 27.