전체글110 트랜잭션 전파 옵션을 이용해서 복구하기 목차개요복구 REQUIRE복구 REQUIRE_NEW복구 REQUIRES_NEW 사용X결론1. 개요회원 가입과 로그를 하나의 트랜잭션으로 묶은 기능이 있다. 이때 이력 로그를 DB에 남기는 작업에 문제가 발생해서 가입 자체가 안되는 경우가 발생한다고 하자.‘회원 가입을 시도한 로그를 남기는데, 실패하더라도 회원 가입은 유지되어야 한다.’이 요구사항을 만족하기 위해 REQUIRES_NEW 옵션을 사용해보자.2. 복구 REQUIRE개발자들이 많이 하는 실수 케이스이다.LogRepository 에서 예외가 발생하면 그것은 MemberService 에서 예외를 잡아서 처리하면 될 것 같다라고 생각한다.그러나 내부 트랜잭션에서 rollbackOnly 를 설정하기 때문에 결과적으로 정상 흐름 처리를 해서 외부 트랜잭.. 2024. 8. 3. 스프링 트랜잭션 전파에 대해 알아보자 목차개요전파 기본외부롤백내부롤백결론1. 개요트랜잭션이 둘 이상 있을때 어떻게 동작하는지 자세히 알아보고, 트랜잭션 전파에 대한 개념을 알아보려고 한다. 트랜잭션을 각각 사용하는 것이 아니라 트랜잭션이 이미 진행중인데, 여기에 추가로 트랜잭션을 수행하면 어떻게 될까?기존 트랜잭션이 별도의 트랜잭션을 진행해야 하는지? 아니면 기존 트랜잭션을 그대로 이어 받아서 트랜잭션을 수행해야 하는지? 이런 경우 어떻게 동작할지 결정하는 것을 트랜잭션 전파(propagation)라 한다.2. 전파 기본외부 트랜잭션이 수행중인데, 내부 트랜잭션이 추가로 수행됨.스프링에서 이 경우 외부 트랜잭션과 내부 트랜잭션을 묶어서 하나의 트랜잭션을 만들어준다. 내부 트랜잭션이 외부 트랜잭션에 참여하는 것이다. 이것은 기본동작이고 옵션을.. 2024. 7. 28. @Transactional을 사용할때 어떤 점을 주의할까? 목차개요주의사항1 - 프록시 내부 호출주의사항2 - public 메서드만 트랜잭션 적용주의사항3 - 초기화 시점결론1. 개요보통 트랜잭션을 걸고 싶을때 간단하게 @Transactional 키워드를 자주 사용한다. 이 키워드를 사용하면 스프링의 트랜잭션 AOP가 적용된다.트랜잭션을 적용하다가 많은 개발자들이 이 문제를 실수 하는 경우가 많은데 아래 내용을 천천히 살펴보자.2. 주의사항1 - 프록시 내부 호출 @Transactional 을 적용하면 프록시 객체가 요청을 먼저 받아서 트랜잭션을 처리하고, 실제 객체를 호출해준다.따라서, 트랜잭션을 적용하려면 항상 프록시를 통해서 대상 객체를 호출해야 한다.AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링 빈으로 등록한다. 따라서 스프링은 의존관꼐 주.. 2024. 7. 11. 자바의 람다식은 왜 등장했을까? 목차개요코드 간결성 및 가독성 향상병렬 처리 및 스트림 API와의 통합함수형 인터페이스와의 연계코드 재사용성 및 유지보수성 향상결론1. 개요자바의 람다식(Lambda Expression)은 함수형 프로그래밍 개념을 도입하여 자바의 생산성을 높이고, 코드의 가독성과 간결성을 개선하기 위해 등장했다. 람다식은 자바 8에서 도입되었다.2. 코드 간결성 및 가독성 향상자바 8 이전에는 익명 내부 클래스(Anonymous Inner Classes)를 사용하여 함수형 프로그래밍을 흉내내는 방식으로 코딩해야 했다. 이는 코드가 장황해지고 가독성이 떨어지는 문제를 초래했다. 람다식을 사용하면 다음과 같은 간결하고 가독성 높은 코드를 작성할 수 있다.ex) 익명 내부 클래스 vs 람다식1) 익명 내부 클래스 사용List.. 2024. 7. 1. 어노테이션을 사용하는 이유와 효과에 대해 알아보자 목차어노테이션이란?어노테이션을 사용하는 이유와 효과나만의 어노테이션 만들기1. 어노테이션이란?어노테이션(Annotation)은 자바 프로그래밍 언어에서 코드에 대한 메타데이터를 제공하는 일종의 표기법이다. 어노테이션은 코드의 메타데이터를 제공하고, 다양한 프레임워크와 도구에서 코드의 행동을 제어하거나 확장하는 데 널리 사용된다.2. 어노테이션을 사용하는 이유와 효과어노테이션은 다양한 목적을 제공하는데 사용하는 이유와 효과는 다음과 같다.코드 가독성 및 유지보수성 향상의미 명확화: 어노테이션을 통해 코드의 의도를 명확하게 표현할 수 있다. 예를 들어, @Deprecated 어노테이션은 특정 메서드가 더 이상 사용되지 않음을 명확히 나타낸다.코드 분리: 반복적인 코드나 부가적인 로직을 어노테이션으로 분리함으.. 2024. 6. 26. 논리적삭제 vs 물리적삭제 논리적삭제 vs 물리적삭제목차개요논리적 삭제(Logical Deletion)물리적 삭제(Physical Deletion)결론1. 개요논리적 삭제(Logical Deletion)와 물리적 삭제(Physical Deletion)는 데이터를 처리하는 방법에 있어서 근본적인 차이를 가진다. 이 두 가지 방법은 주로 데이터베이스 관리나 파일 시스템 관리에서 데이터를 어떻게 삭제할지 결정할 때 사용된다. 각각의 삭제에 대해 장단점을 파악해보자.2. 논리적 삭제(Logical Deletion)논리적 삭제는 데이터를 실제로 데이터베이스나 파일 시스템에서 제거하지 않는 방식이다. 대신, 데이터가 삭제되었다는 표시를 남겨 데이터를 더 이상 사용하지 않도록 한다. 예를 들어, 데이터베이스의 특정 행에 ‘삭제됨’또는 ‘비활성.. 2024. 6. 20. 이전 1 2 3 4 5 6 ··· 19 다음