spring
-
spring transaction roll back 처리Spring/Spring 기본 지식 2021. 6. 20. 15:15
회사 프로젝트를 확인하다가 try catch와 transation에 대해서 궁금한한게 생겼다. 궁금한 내용들은 각각의 예외처리가 된 메소드에서 에러가 발생이될 때 서로의 관계가 어떻게 될까? 였다. 이에 따른 현상을 이해하기 위해서 우선적으로 Excatpion과 Error의 기본적인 개념을 알면서 공부하자 아래의 링크를 타고가게 된다면 기본적인 개념에 대해서 적었지만 이번 글에서는 좀 더 나아가서 공부할 예정이다. 2020.07.19 - [Java & 배경지식/기본상식] - 자바 개발자가 알아야하는 25가지 상식! 아래에 관련된 코드는 여기 확인하면 된다. Exception과 Error Exception과 Error는 한 마디로 개발자가 대응을 할 수 있냐 없냐로 구분할 수 있다. 쉽게 말하면 Erorr..
-
레디스 사용법DataBase/Redis 2021. 6. 6. 18:23
레디스란? 2021.05.19 - [DataBase/Redis] - Redis란? 회사에서 레디스를 사용하게 되었다. 그래서 기본적인 사용법을 알고자 코드를 작성해 보았다. 전체적인 코드는 git에 올려다 두었다. 스프링에서 레디스를 사용하는 방법은 크게 2가지가 존한다. 1. StringRedisTemplate of RedisTemplate 2. CrudRepository 사용법 1. docker 실행 docker run -p 6379:6379 --name redis_boot -d redis 2. 레디스 접속 docker exec -i -t redis_boot redis-cli 3. 코드 작성 3-1. StringRedisTemplate springboot 2.0이상부터는 auto-configurati..
-
spring @ControllerAdvice, @ExceptionHandlerSpring/Spring 기본 지식 2021. 4. 7. 15:27
코딩을 하다가 몇개의 Exception은 처리가 쉬운게 이것이 여러개인 경우 또는 Error Message 처리는 어떻게 할까? 라는 의문으로 시작하게 되어 Advice를 공부하게 되었다 코드를 작성을 하게 되면 Exception처리가 매우 길어지거나, 처리하기가 매우 힘들어진다. 그렇기 때문에 스프링에서는 크게 ControllerAdvice, ExceptionHandler 2가지 방법으로 에러처리를 진행한다. 해당코드는 gitHub 확인해주세요 ExceptionHandler Controller나 RestController에서 발생되는 에러를 메소스에서 처리하는 기능을 가졌다. 하지만 단점이 있는데 단점을 알아 보자. 단점 Controller 또는 RestController에서만 작동이 된다. Excep..
-
스프링 데이터 JPA김영한(인프런 강의)/실전! 스프링 데이터 JPA 2021. 2. 15. 11:58
코드 github.com/rlawls1991/Study_practice_RestAPI 스프링 데이터 JPA 전 강의를 보게 된다면 Repository를 직접 상황에 맞게 구현을 해야 한다. 하지만 스프링 JPA는 이와같은 역할을 대신해준다. 어떤식으로 대신해줄까 한번 알아보자 스프링 데이터 JPA 스프링 데이터 JPA 코드 아래는 기본적인 스프링 JPA DATA의 코드이다. 코드를 보게 된다면 JpaRepository 인터페이스를 상속받았다. 하지만 구현체가 없는데 어떤식으로 동작이 될까? import com.jpa.practice.domain.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; public interf..
-
QueryDSL 소개김영한(인프런 강의)/실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 2021. 2. 9. 18:06
www.querydsl.com/ 코드 github.com/rlawls1991/Study_JPA_API QueryDSL 사용이유 Querydsl은 SQL(JPQL)과 모양이 유사하면서 자바 코드로 동적 쿼리를 편리하게 생성할 수 있다. 실무에서는 복잡한 동적 쿼리를 많이 사용하게 되는데, 이때 Querydsl을 사용하면 높은 개발 생산성을 얻으면서 동시에 쿼리 오류를 컴파일 시점에 빠르게 잡을 수 있다. 꼭 동적 쿼리가 아니라 정적 쿼리인 경우에도 다음과 같은 이유로 Querydsl을 사용하는 것이 좋다. 장점 직관적인 문법 컴파일 시점에 빠른 문법 오류 발견 코드 자동완성 코드 재사용(이것은 자바다) JPQL new 명령어와는 비교가 안될 정도로 깔끔한 DTO 조회를 지원한다 사용예시 public Lis..
-
OSIV와 성능 최적화김영한(인프런 강의)/실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 2021. 2. 9. 18:04
OSIV Open Session In View 하이버네이트 Open EntityManager In View JPA (관례상 OSIV라 한다.) OSIV ON (OSIV 사용) spring.jpa.open-in-view=true JPA를 의존성 추가하고 어플리케이션(WAS)를 시작할 때 WARN으로 뿌리는 이유가 뭘까? 바로 영속성 컨텍스트(1차캐시)에 관한 것이다. OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 그래서 지금까지 View Template이나 API 컨트롤러에서 지연 로딩이 가능했던 것이다. 지연로딩이라는 영속성 컨텍스트가 살아있어야 가능하고, 영속성 컨텍스트는 기본적으로 데이터베이스 커..