들어가기 전 이 글은 인프런 영한님의 강의를 복습하며 작성한 글입니다. 스프링 트랜잭션 추상화 스프링은 다양한 데이터 접근 기술을 지원한다. 다양한 데이터 접근 기술은 저마다 서로 다른 방식으로 트랜잭션을 사용하고 있었다. 아래에서 JPA와 JdbcTemplate의 트랜잭션 사용 코드를 볼 수 있다. // JdbcTemplate public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //트랜잭션 시작 //비즈니스 로직 bizLogic(con, fromId, toId,..
Spring Data와 Spring Data JPA 예전에는 RDBMS에 모든 데이터를 저장한 후에 처리하는 형식이었다. 그렇지만 최근에는 MongDB, Redis 등 다양한 형태의 DB가 등장했다. 이 모든 DB들은 궁극적으로는 소위 말하는 데이터의 CRUD를 하는데, 이 말은 비슷한 형태로 동작한다는 것을 의미한다. 스프링 진영에서는 다양한 DB에 공통적인 인터페이스를 제공하고자 Spring Data 인터페이스를 제공한다. 스프링 데이터 JPA는 인터페이스의 구현체 역할을 한다. 그렇지만 스프링 데이터 JPA는 단순한 통합은 아니다. 아래 같은 기능을 제공해준다. CRUD + 쿼리 동일한 인터페이스 페이징 처리 메서드 이름으로 쿼리 생성 스프링 MVC에서 ID 값만 넘겨도 도메인 클래스로 바인딩 됨...
들어가기 전 이 글은 인프런 영한님의 스프링 DB 2편 - 데이터 접근 활용 기술을 공부하며 작성한 글입니다. JPA 시작 JPA는 ORM 데이터 접근 기술을 제공한다. MyBatis, JdbcTemplate은 SQL을 개발자가 직접 작성해야한다. 반면 JPA는 SQL를 개발자 대신 작성해준다. JPA는 일반적으로 QueryDSL이라는 기술과 함께 사용된다. JPA 필요성 SQL 의존적인 개발에서 벗어날 수 없다. SQL에 사용되는 많은 개발 쿼리들을 무한히 반복해서 작성해야 함. 객체에 필드가 하나 추가되는 등의 변경점이 발생한다면, SQL을 모두 고쳐야 함. 객체 vs 관계형 데이터베이스의 패러다임이 불일치함. 객체와 관계형 데이터베이스의 차이가 발생함. (상속, 연관관계, 데이터 타입, 데이터 식별..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. MyBatis의 장점 SQL을 XML에 편리하게 작성할 수 있다. (라인이 길어져도 문자 더하기에 대한 불편함이 없다. 그림 추가) 동적 쿼리를 매우 편리하게 작성할 수 있다. MyBatis의 단점 MyBatis는 약간의 설정이 필요하다. 프로젝트에서 동적 쿼리와 복잡한 쿼리가 많다면 MyBatis를 사용하는 것이 좋다. 단순한 쿼리가 많은 경우 JdbcTemplate을 선택해서 사용하는 것이 좋다. 둘을 함께 사용해도 좋다. MyBatis의 설정 //MyBatis 추가 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' MyBatis를 사용하기 위해서는 MyBa..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. DB 연동 데이터 접근 기술은 DB에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요하다. ItemRepositoryTest를 통해서 테스트를 진행한다. 어플리케이션용 application.properties와 테스트용 application.properties에는 각각 Profile에 대한 값이 설정되어있다. 각각의 Profile에 따라 다르게 동작할 수 있다. 그리고 DB 설정 정보를 어떻게 하느냐에 따라 다르게 동작할 수 있다. @SpringBootTest @SpringBootTest어노테이션이 존재하는 클래스는 테스트를 실행하면 @SpringBootApplication 어노테이션을 검색한다. @SpringBootAppl..