Spring (53) 썸네일형 리스트형 [Spring DB] 스프링 트랜잭션 목차스프링 트랜잭션 소개트랜잭션 적용 확인트랜잭션 적용 위치트랜잭션 AOP 주의 사항 - 프록시 내부 호출트랜잭션 AOP 주의 사항 - 초기화 시점트랜잭션 옵션 소개예외와 트랜잭션 커밋, 롤백 스프링 트랜잭션 소개스프링 트랜잭션 추상화각각의 데이터 접근 기술들은 트랜잭션을 처리하는 방식에 차이가 있다. 예를 들어 JDBC 기술과 JPA 기술은 트랜잭션을 사용하는 코드 자체가 다르다. 따라서 JDBC 기술을 사용하다가 JPA 기술로 변경하게 되면 트랜잭션을 사용하는 코드도 모두 함께 변경해야 한다. 스프링은 이런 문제를 해결하기 위해 트랜잭션 추상화를 제공한다. 트랜잭션을 사용하는 입장에서는 스프링 트랜잭션 추상화를 통해 둘을 동일한 방식으로 사용할 수 있게 되는 것이다. 스프링은 PlatformTrans.. [Spring DB] 데이터 접근 기술 - Querydsl 목차Querydsl 소개Querydsl 설정Querydsl 적용 Querydsl 소개Query의 문제점String sql = "select * from member" +"where name like ?" +"and age between ? and ?"[문자를 합치면]"select * from memberwhere name like ?and age between ? and ?"Query는 문자, Type-check 불가능 실행하기 전까지 작동여부 확인 불가SQL 문법 오류 발생 에러는 크게 2가지로 분류컴파일 에러(좋은 에러)런타임 에러(나쁜 에러) Querydsl만약 SQL이 클래스 처럼 타입이 있고 자바 코드로 작성할 수 있다면?쿼리를 자바로 type-safe 하게 개발할 수 있게 지원하는 프레임워크주.. [Spring DB] 데이터 접근 기술 - 스프링 데이터 JPA 목차스프링 데이터 JPA 주요 기능스프링 데이터 JPA 적용1스프링 데이터 JPA 적용2 스프링 데이터 JPA 주요 기능공통 인터페이스 기능쿼리 메서드 기능 1️⃣ 공통 인터페이스 기능JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능 제공한다.공통화 가능한 기능이 거의 모두 포함되어 있다.CrudRepository 에서 fineOne() ➔ findById() 로 변경되었다. JpaRepository 사용법public interface ItemRepository extends JpaRepository {}JpaRepository 인터페이스를 인터페이스 상속 받고, 제네릭에 관리할 를 주면 된다.그러면 JpaRepository 가 제공하는 기본 CRUD 기능을 모두 사용할 수 있다. 스.. [Spring DB] 데이터 접근 기술 - JPA 목차JPA 시작JPA 설정JPA 적용1 - 개발JPA 적용2 - 리포지토리 분석JPA 적용3 - 예외 변환 JPA 시작스프링과 JPA는 자바 엔터프라이즈(기업) 시장의 주력 기술이다. 스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA는 ORM 데이터 접근 기술을 제공한다. 실무에서는 JPA를 더욱 편리하게 사용하기 위해 스프링 데이터 JPA와 Querydsl이라는 기술을 함께 사용한다. 중요한 것은 JPA이다. 스프링 데이터 JPA, Querydsl은 JPA를 편리하게 사용하도록 도와주는 도구라 생각하면 된다. JPA 설정spring-boot-starter-data-jpa 라이브러리를 사용하면 JPA와 스프링 데이터 JPA를 스프링 부트와 통합하고, 설정도 아주 간단.. [Spring DB] 데이터 접근 기술 - MyBatis 목차MyBatis 소개MyBatis 설정MyBatis 적용1 - 기본MyBatis 적용2 - 설정과 실행MyBatis 적용3 - 분석MyBatis 기능 정리1 - 동적 쿼리MyBatis 기능 정리2 - 기타 기능 MyBatis 소개MyBatis는 앞서 설명한 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper 이다. 기본적으로 JdbcTemplate이 제공하는 대부분의 기능을 제공한다. JdbcTemplate과 비교해서 MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고또 동적 쿼리를 매우 편리하게 작성할 수 있다는 점이다. 1️⃣ SQL이 여러줄에 걸쳐 있을 때 비교 JdbcTemplate - SQL 여러줄String sql = "update it.. [Spring DB] DB 테스트 - 데이터 롤백 목차테스트 - 데이터베이스 연동테스트 - 데이터베이스 분리테스트 - 데이터 롤백테스트 - @Transactional테스트 - 임베디드 모드 DB테스트 - 스프링 부트와 임베디드 모드 테스트 - 데이터베이스 연동데이터베이스에 연동하는 테스트에 대해서 알아보자. 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요하다.spring.profiles.active=testspring.datasource.url=jdbc:h2:tcp://localhost/~/testspring.datasource.username=salogging.level.org.springframework.jdbc=debug테스트 케이스는 src/test 에 있기 때문에, 실행하면 src/te.. [Spring DB] 데이터 접근 기술 - JdbcTemplate 목차JdbcTemplate 설정JdbcTemplate 소개JdbcTemplate 적용동적 쿼리 문제구성과 실행JdbcTemplate - NamedParameterJdbcTemplateJdbcTemplate - SimpleJdbcInsertJdbcTemplate 정리 JdbcTemplate 설정1️⃣ MySql 스키마 생성 2️⃣ build.gradle//JdbcTemplate 추가implementation 'org.springframework.boot:spring-boot-starter-jdbc'//mysql 데이터베이스 추가runtimeOnly 'com.mysql:mysql-connector-j' 3️⃣ application.propertiesspring.datasource.driver-class.. [Spring DB] 스프링 예외 추상화 DataAccessException 목차체크 예외와 인터페이스런타임 예외 적용데이터 접근 예외 직접 만들기스프링 예외 추상화 이해스프링 예외 추상화 적용JDBC 반복 문제 해결 - JdbcTemplate ✅ 체크 예외와 인터페이스서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수하게 유지하는 것이 좋다. 이렇게 하려면 예외에 대한 의존도 함께 해결해야한다. 예를 들어서 서비스가 처리할 수 없는 SQLException 에 대한 의존을 제거하려면 어떻게 해야할까? 서비스가 처리할 수 없으므로 리포지토리가 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지자. 이렇게 하면 서비스 계층이 해당 예외를 무시할 수 있기 때문에, 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있.. [Spring DB] 예외 활용 방안 목차예외 계층예외 기본 규칙체크 예외 기본 이해언체크 예외 기본 이해체크 예외 활용언체크 예외 활용예외 포함과 스택 트레이스 예외 계층스프링이 제공하는 예외 추상화를 이해하기 위해서는 먼저 자바 기본 예외에 대한 이해가 필요하다. 예외의 기본 내용을 간단히 살펴보고, 실무에 필요한 체크 예외와 언체크 예외의 차이와 활용 방안에 대해서도 알아보자. 예외 계층 그림 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object 이다. Throwable : 최상위 예외이다. 하위에 Exception 과 Error 가 있다.Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 .. [Spring DB] 트랜잭션 매니저 목차트랜잭션 추상화트랜잭션 동기화트랜잭션 문제 해결 - 트랜잭션 매니저트랜잭션 문제 해결 - 트랜잭션 템플릿트랜잭션 문제 해결 - 트랜잭션 AOP 스프링 부트의 자동 리소스 등록 애플리케이션 구조여러가지 애플리케이션 구조가 있지만, 가장 단순하면서 많이 사용하는 방법은 역할에 따라 3가지 계층으로 나누는 것 이다. 프레젠테이션 계층UI와 관련된 처리 담당웹 요청과 응답 사용자 요청을 검증주 사용 기술: 서블릿과 HTTP 같은 웹 기술, 스프링 MVC서비스 계층비즈니스 로직을 담당주 사용 기술: 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성데이터 접근 계층실제 데이터베이스에 접근하는 코드주 사용 기술: JDBC, JPA, File, Redis, Mongo.. 🤔 여기서 가장 중요한 곳은 어.. 이전 1 2 3 4 5 6 다음