본문 바로가기

전체 글99

@Transactional에 대한 정리[번외] - RuntimeException와 Errorcode 애플리케이션을 개발할때 CustomException을 제작해서 따로 ErrorCode 정의 후 Exception을 떤져준다. @Transactional을 떤져서 rollback을 의도한다. 그럼 Exception과 어떻게 구성할지 조금 더 확인해보자 흔히 아는 UncheckedException(RuntimeException)과 CheckedException이 존재한다. 둘의 차이점은? 나의 본 목적은 CustomException을 제작하여 나의 Exception을 떤지면서 rollback을 진행하고 싶다. 그러면 우선 내가 만드는 CustomExcpetion은 RuntimeExcpetion을 extends하자 그럼 요기서 잠깐 CheckedException은 왜 롤백을 진행하지 않는가? 기본적으로 che.. 2023. 9. 11.
@Transactional에 대한 정리[4] - rollbackFor(Class)에 관하여 @Transactional은 UncheckedException에 대해서 rollback이 이뤄진다. 하지만 CheckedException 또한 Exception이자면 exception인데... 모든 Exception에 대해서 처리하고 싶으면 어떻게 진행해야 하늗가? @Transactional(rollbackFor = Exception.class)으로 진행한다. checked, uncehcek 둘의 부모 클래스는 결국 Exception.class이기에 @Transcational(rollbackFor = Excpetion.class)으로 보든 exception에 rollback을 진행한다. 앞서 Transaction이 진행되는 상황에서 TransactionAspectSupprt가 call 되는 상황임을 알 .. 2023. 9. 11.
@Transactional에 대한 정리[3] - rollback()에 관하여 보오오오통 @Transactional의 rollback이 UncheckedException에 반응한다는 부분은 모두가 아는 사실이다. 그럼 rollback()은 어떻게 진행되는가? @Transactional에서 rollback()이 어떻게 동작하는가? @Transactional의 docs를 따라가보면 TransactionAttribute, DefaultTransactionAttribute, RuleBasedTransactionAttribute를 확인할 수 있다. TransactionAttribute (TranscationalDefinition) https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/trans.. 2023. 9. 11.
@Transactional에 대한 정리[2] - (readOnly=true)에 관하여 @Transactional에 대한 정리 [1]에서 작성했듯이 Service단을 전체적으로 @Transactional(readOnly=true)를 적용하고 rollback을 희망하는 부분에 대해서 메소드 별로 따로 @Transactional을 적용하고 있다고 밝힌적이 있습니다. @Transactional(readOnly=true)가 기본적으로 성능 이점을 가져온다는 것은 알고 있지만 정확히 어떤 이점이 있는지에 대해서 자세히 정리 해본적이 없기에 정리해봅니다. 해당 이점은 JPA를 사용하면서 영속성 컨텍스트(Persistence Context)가 수행하는 변경 감지(Dirty Checking)과 연관 되어있습니다. JPA는 사용하면 작업을 쭈우우우욱 진행하고 쓰기 지연 저장소에 있는 SQL query를 f.. 2023. 9. 11.
@Transactional에 대한 정리 [1] Service단에서 주로 사용하는 @Transactional(readOnly=true)에 대해서 정리할 겸 @Transactional을 정리해보고자 한다. 우선 Transactional의 기본 docs를 살펴보자 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html Transactional (Spring Framework 6.0.11 API) Describes a transaction attribute on an individual method or on a class. When this annotation is declared at.. 2023. 9. 11.
AWS + Lambda@Edge + CloudFront 이미지 리사이징 회사에서 진행하는 프로젝트에 페이지 로딩 이슈가 올라왔다. 현재 AWS - CloudFront를 통해서 캐싱을 진행하고 있는데도 이슈가 올라온것이다 슬프지만 확인은 해야 하는 법...! 라이트 하우스로 1차 확인 상세 로딩 속도 확인 이미지가 짤렸지만.... 대략 8초가 걸리는것으로 확인 된다. 제일 늦게 로딩 되는 부분이 favicon이지만, 메인페이지에서 보여지는 컨텐츠의 썸네일 또한 로딩 속도가 매우 느린 상황임을 할 수 있다. 도데체... 왜? 라는 생각으로 컨텐츠들의 용량을 확인해봤다. 용량이... ? 눈을 의심했다. 웹 사이트의 로딩에 3초 이상이 걸리면 느리다고 인식 되는데.. 이래서는 안된다. 우선 생각 할 수 있는 방안은 두가지였다. 1. 현재 사이즈가 큰 썸네일을 가진 이미지들에 대해서.. 2023. 8. 18.