본문 바로가기

분류 전체보기133

[Spring] 트랜잭션 전파(Transactional Propagation) 스프링에서 '@Transactional' 어노테이션을 사용하게 되면 클래스 또는 매서드 단위로 트랜잭션을 관리하게 해줄 수 있다. 이러한 방식을 스프링에서 선언적 트랜잭션 경계설정이라 말하고, 이러한 선언적 트랜젝션은 트랜랜잭션 전파기능을 제공한다. 여기서 트랜잭션 전파란 서로 연결된 객체(서비스)사이에서 각각의 트랜잭션을 어떻게 전파시키는지 라고 말할수 있다. 트랜잭션 설정 방법에는 코드를 이용하여 경계를 설정하는 방법과 어노테이션을 이용하는 방법이 있는데 이글에서는 어노테이션을 이용한 방법을 이용하여 트랜잭션 전파에 대해 정리해보자 한다. '@Transactional' 어노테이션의 속성으로 propagation 을 설정하는 기능이 존재한다. propagation 속성값들로 다음 7가지가 존재한다. 1.. 2022. 7. 13.
[Query dsl] maven QueryDsl 설정 QueryDSL이란 Querydsl 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크. 1. pom.xml .... com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java com.querydsl.apt.jpa.JPAAnnotationProcessor .... com.querydsl querydsl-apt ${querydsl.version} provided com.querydsl querydsl-jpa ${querydsl.version} 사용법 Entity 클래스 작성 package com.chk.reservation.template.entity; import lombok.AllArgsCons.. 2022. 7. 11.
[JUnit5] 테스트 코드 시작해보기 - 1 JUnit5 사용환경 : Java8 이상 구성 Platform : 테스트 실행런처 제공 (TestEngine API 제공) Jupiter : TestEngine API 구현체 Vintage: JUnit4,3 지원 구현체 JUnit 의존성 추가 2.2+ 버전의 스프링 부트 프로젝트를 만든다면 기본적으로 JUnit5 가 추가되어 있다. 그외 hamcrast, mokito등 라이브러리가 아래 dependancy에 포함되어 있다. dependencies { ... testImplementation 'org.springframework.boot:spring-boot-starter-test' } JUnit5 기본 포멧 인텔리제이 기준 테스트 하려는 컴포넌트 이름에 커서를 둔후 ALT+Enter 를 누르면 아래 사진.. 2022. 6. 15.
[스프링구조] 스프링에서의 싱글톤 싱글톤 패턴은 디자인 패턴중에서 가장 친근하고 쉽게 접할수 있는 패턴이다. 그리고 스프링을 배우게 된다면 스프링에서는 스프링 빈객체들을 싱글톤으로 관리한다고 배운다. 하지만 일반적인 싱글톤 디자인패턴과 스프링에서 사용되는 싱글톤은 개념은 같으나 다르게 동작하게 된다. 아래 글은 일반적인 싱글톤 방식과 실제 스프링에서 싱글톤이 어떤 방식으로 진행되는지 정리해보려 한다. 싱글톤 패턴 (개념) 먼저 싱글톤 패턴의 기본 개념을 살펴보자 In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one "single" instance. This is us.. 2022. 5. 18.
[JPA] 영속성 컨텍스트에 따른 엔티티 조회. JPA 에서 Entity를 관리하는 영속성 컨텍스트는 정말 중요한 개념이다. 이번 이직을 준비하면서 기술면접으로 물어본 질문중 "@Transactional 이 있는 서비스를 한단계 위 서비스에서 다른 트랜잭션으로 묶었을때 해당 객체에 연관된 객체를 불러오게 되면 어떻게 되는가?" 대충 이런식의 질문 이었다. [퍼사드패턴]으로 상위 트랜잭션에서 하위 서비스에 새로운 트랜잭션으로 엔티티를 불러오고 해당 서비스에서 이미 트랜잭션이 종료되고 해당 엔티티는 비영속 상태가 되어 더이상 엔티티로 관리되지 않고 그 상태에서 해당 엔티티와 연관관계가 있는 객체를 불러오면 해당 연관 객체를 가져올수 없다고 대답은 했지만.. 실제로 어떻게 동작하는지 확인하기 위해 직접 코드를 작성해 보았다. 구성 아주 간단한 구성으로 회원.. 2022. 5. 17.
반응형