Spring-Boot
-
스프링 DB 데이터접근 기술 - 스프링데이터 JPASpring-Boot/스프링 DB 2편 - 데이터 접근 기술 2022. 9. 22. 18:19
스프링 데이터 JPA 주용기능 - 스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다. 공통 인터페이스 기능 - `JpaRepository` 인터페이스를 통해서 기본적인 CRUD 기능 제공한다 - 공통화 가능한 기능이 거의 모두 포함되어 있다 - `CrudRepository`에서 `findOne()` → `findById()`로 변경 * JpaRepository 사용법 * public interface ItemRepository extends JpaRepository { } - `JpaRepository` 인터페이스를 인터페이스 상속 받고, 제네릭에 관리할 ``를 주면된다 - 그러면 `JpaRepository`가 제공하는 기본 CRUD 기능을 모두 사용가능 * 스프링 데이터..
-
스프링 DB 데이터접근 기술 - JPASpring-Boot/스프링 DB 2편 - 데이터 접근 기술 2022. 9. 22. 16:54
- 대표적으로 JdbcTemplate이나 MyBatis 같은 SQL 매퍼 기술은 SQL을 개발자가 직접 작성해야 하지만, JPA를 사용하면 SQL도 JPA가 대신 작성하고 처리해준다. - 실무에서는 JPA를 더욱 편리하게 사용하기 위해 스프링 데이터 JPA와 Querydsl이라는 기술을 함께 사용한다 ORM 개념1 - SQL 중심적인 개발 문제점 - SQL에 의존적인 개발을 피하기 어렵다. - 객체와 관계형 데이터베이스의 차이 ㆍ1. 상속 ㆍ2. 연관관계 ㆍ3. 데이터타입 ㆍ4. 데이터 식별 방법 - 처음 실행하는 SQL에 따라 탐색 범위 결정 ㆍ계층형 아키텍처 - 진정한 의미의 계층 분할이 어렵다. - 객체답게 모델링 할수록 매핑 작업만 늘어난다. - 객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수..
-
스프링 DB 데이터접근 기술 - MyBatisSpring-Boot/스프링 DB 2편 - 데이터 접근 기술 2022. 9. 17. 17:21
- JdbcTemplate과 비교해서 MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고 또 동적 쿼리를 매우 편리하게 작성할 수 있다. - MyBatis는 XML에 작성하기 떄문에 라인이 길어져도 문자 더하기에 대한 불편함이 없다. - JdbcTemplate은 자바 코드로 직접 동적쿼리를 작성해야한다. 반면에 MyBatis는 동적 쿼리를 매우 편리하게 작성할 수 있는 다양한 기능들을 제공해준다. * 설정의 장단점 * JdbcTemplate은 스프링에 내장된 기능이고, 별도의 설정없이 사용할 수 있다는 장점있다. 반면에 MyBatis는 약간의 설정이 필요하다 * 정리 * - 프로젝트에서 동적 쿼리는 복잡한 쿼리가 많다면 MyBatis를 사용하고, 단순한 쿼리들이 많으면 Jdbc..
-
스프링 DB 데이터접근 기술 - 테스트Spring-Boot/스프링 DB 2편 - 데이터 접근 기술 2022. 9. 14. 18:41
* @SpringBootTest * - @SpringBootTest는 @SpringBootApplication 를 찾아서 설정으로 사용한다. 테스트의 원칙 - * 테스트는 다른 테스트와 격리해야 한다. * - * 테스트는 반복해서 실행할 수 있어야 한다. * * 트랜잭션과 롤백 전략 * - 테스트가 끝나고 나서 트랜잭션을 강제로 롤백해버리면 데이터가 깔끔하게 제거된다. @Autowired PlatformTransactionManager transactionManager; TransactionStatus status; @BeforeEach void beforeEach(){ // 트랜잭션 시작 status = transactionManager.getTransaction(new DefaultTransactio..
-
스프링 DB 데이터접근 기술 - 스프링 JdbcTemplateSpring-Boot/스프링 DB 2편 - 데이터 접근 기술 2022. 9. 5. 18:43
- SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate은 아주 좋은 선택지이다. JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와준다. * 장점 * - 설정의 편리함 ㆍJdbcTemplate은 `spring-jdbc` 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다. ㆍ그리고 별도의 복잡한 설정 없이 바로 사용할 수 있다 - 반복 문제 해결 ㆍJdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리 ㆍ개발자는 SQL을 작성하고, 전달할 파라미터를 정의하고, 응답 값을 매핑하기만 하면 된다 ㆍ우리가 생각할 수 있는 대부분의 반복 작업을 대..
-
스프링 DB 데이터접근 기술 - 시작Spring-Boot/스프링 DB 2편 - 데이터 접근 기술 2022. 9. 1. 18:56
데이터 접근 기술 진행 방식 소개 * 적용 데이터 접근 기술 * - JdbcTemplate - MyBatis - JPA, Hibernate - 스프링 데이터 JPA - Querydsl * SQLMapper * - JdbcTemplate - MyBatis * ORM 관련 기술 * - JPA, Hibernate - 스프링 데이터 JPA - Querydsl * SQL Mapper 주요 기능 * - 개발자는 SQL만 작성하면 해당 SQL의 결과를 개체로 편리하게 매핑해준다. - JDBC를 직접 사용할 때 발생하는 여러 중복을 제거해주고, 기타 개발자에게 여러가지 편리한 기능을 제공 * ORM 주요 기능 * - JdbcTemplate 이나 MyBatis같은 SQL 매퍼 기술은 SQL을 개발자가 직접 작성해야 하지..
-
스프링 DB 데이터접근 원리 - 6. 스프링과 문제해결-예외 처리, 반복Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 8. 29. 19:13
체크 예외와 인터페이스 - 서비스 계층은 가급적 특정 구현 기술에 의존하지 않고 순수하게 유지하는 것이 좋다. 이렇게 하려면 예외에 대한 의존도 함께 해결해야한다 - 예를 들어서 서비스가 처리할 수 없는 'SQLException' 에 대한 의존을 제거하려면 어떻게 해야할까? - 서비스가 처리할 수 없으므로 리포지토리가 던지는 'SQLException' 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지자 - 이렇게 하면 서비스 계층이 해당 예외를 무시할 수 있기 때문에, 특정 구현 기술에 의존하는 부분을 제거하고, 서비스 계층을 순수하게 유지할 수 있다. 인터페이스 도입 - 이렇게 인터페이스를 도입하면 'MemberSevice'는 'MemberRepository' 인터페이스에만 의존하면 된다 - 이제..
-
스프링 DB 데이터접근 원리 - 5. 자바 예외 이해Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 8. 23. 19:09
예외 계층 * Object : 예외도 객체이다. 모든 객체의 최상위 부모는 ' Object ' 이므로 예외의 최상위 부모도 ' Object ' 이다 * Throwable : 최상위 예외이다. 하위에 ' Exception '과 ' Error ' 가 있다. * Error - 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다 - 상위 예외를 ' catch '로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 ' Throwable ' 예외도 잡으면 안되는데, 앞서 이야기한 ' Error ' 예외도 함께 잡을 수 있기 때문이다. 애플리케이션 로직은 이런 이유로 ' Exception '부터 필요한 ..