Transaction Proxy, Exception 에 대해 공부하면서 정리합니다. 실무에서 @Transactional 을 붙인 메서드를 실행했는데 정상적으로 동작하지 않아 원인을 찾고 공부한 내용을 정리했습니다.트랜잭션 프록시를 만드는 이유왜 굳이 프록시를 만들어서 트랜잭션을 처리해야 할까요?@Transactional 이 붙은 메서드가 호출될 때 자동으로 트랜잭션을 시작하고, 정상 종료되면 commit, 예외가 나면 rollback 을 해주기 위해서입니다. 구체적으로 왜 프록시가 필요한지 코드를 보면 트랜잭션을 처리하려면 메서드 실행 전후로 아래와 같은 코드가 필요합니다.beginTransaction(); // 트랜잭션 시작try { targetMethod(); // 실제 로직 실행 ..
@Transactional , Spring Data JPA 를 공부하다 같이 사용할 때왜 이렇게 동작하는거지? 라는 부분에 대하여 정리합니다. 개발을 하다보면 Spring Data JPA 는 기본적으로 트랜잭션을 자동으로 처리해 줍니다.하지만 @Transactional, Spring Data JPA 를 같이 쓰고 있을 때 @Transactional 이 언제 필요한지, 언제 생략 가능한지에 대해서 세부적으로 알아야 할 것 같아서 정리했습니다. 기본적으로 적용되는 트랜잭션Spring Data JPA 에서 제공하는 기본적인 메서드들은 아래와 같습니다. 1. save()2. findById()3. delete()4. findAll() 이러한 메서드들은 자동으로 트랜잭션이 적용되어 있습니다.이건 Spring 내..
간단한 설명Spring Bean 은 다음과 같은 생명 주기를 갖습니다.스프링 컨테이너 생성 => 스프링 밴 생성 => 의존관계 주입( DI ) => 초기화 콜백 => 사용 => 소멸전 콜백 => 스프링 종료 위 생명 주기를 보면 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 후에야 필요한 데이터를 사용할 수 있는 준비가 완료됩니다.즉, 생성자가 호출되었을 때 스프링 빈은 초기화 전이고 DI 가 이루어지고 나서야 스프링 빈이 초기화 됩니다. 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출하게 되는데, 개발자가 의존관계 주입이 완료된 시점이 언제인지 알 수 있는 방법이 없습니다. 그래서 Spring 은 다음과 같은 빈 생명주기 콜백을 지원합니다.1. 인터페이스( InitializingB..
CI / CD 개념 정리CI / CD 는 Continuous Integration( 지속적인 통합 ) 과 Continuous Delivery/Deployment( 지속적인 제공 / 배포 ) 를 의미하는 개발 프로세스 자동화 개념입니다. 이러한 자동화는 소프트웨어 개발의 효율성을 극대화하고, 오류를 최소화하며, 신속한 배포를 가능하게 합니다.CICI 는 개발자가 작성한 코드 변경 사항을 정기적으로 중앙 저장소( 리포지토리 ) 에 통합하고 빌드 및 테스트를 자동으로 수행하는 프로세스입니다. CI 를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이나 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로, 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 ..
spring boot 는 jar 파일로, spring framework 는 war 파일로 배포해야 한다. 라는 관행처럼 간주되는 내용에 대해,정확히 어떤 이유로부터 파생된 결론인지 궁금해 정리해 보았습니다. JAR ( Java Archive )JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일입니다.class( Java resource, 속성 파일 ), 라이브러리 파일을 포함하며 JRE 만 있어도 실행이 가능합니다.장점독립적인 Java 애플리케이션을 패키징할 수 있고, 실행 가능한 JAR 파일로 만들어서 개발자가 쉽게 애플리케이션 개발이 가능합니다. 또한 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포와 전달도 용이합니다.마지막으로 Java 애플리케이션의 진입점인 ma..
Gradle과 Maven 을 설명하기 전에 우선 빌드와 빌드도구가 무엇인지에 대해서 알아야 합니다.빌드란 프로그램을 실행 가능한 배포 파일을 만들어 내는 것을 의미합니다. 즉, 소스 코드를 컴파일하고, 컴파일된 클래스 파일과 리소스 파일등 프로그램 실행에 관련된 파일들을 패키징 하여, 배포 가능한 형태로 만드는 것을 의미합니다.빌드가 생성되는 과정에서 이루어지는 과정컴파일, 테스트, 패키징, 의존성 관리, 배포, 클린업, 리포트 빌드 도구는 이러한 일련의 빌드 과정을 자동화해주는 소프트웨어입니다. 설정 파일을 통해 필요한 작업을 정의하고 클릭 한 번으로 모든 의존 라이브러리(jar 파일) 을 다운로드해 컴파일하고, 테스트하고, 패키징하여 배포까지 자동으로 처리할 수 있습니다. 이로 인해 배포 작업이 간편..
메세지화면에서 공통으로 사용되는 다양한 메세지를 한 곳에서 관리하도록 하는 기능을 메세지 기능이라고 합니다.메세지 기능을 사용하지 않을 경우 우리는 모든 메세지를 각각 하드코딩으로 입력해야 합니다. 상품 ID 상품명 가격 수량 아이템 상세를 보여주는 위 HTML 태그들에는 각각 하드코딩으로 상품ID, 상품명, 가격, 수량이 적혀있습니다.또한 해당 명칭들은 나머지 다른 많은 페이지에서 공통으로 쓰이고 있다고 할 대 기획 변경으로 상품명을 제품명으로 바꿔야 한다면 어떻게 할까요? 메세지 기능을 사용하지 않았다면 모든 소스파일에서 하나하나 상품명이라 적혀있는 곳을 찾아 제품명이라 바꿔주어야 합니다. 하지만 메세지 기능을 사용했다면 다음과 같이 메세지를 변수화 ..
자바 8 부터 람다식과 함께 사용하던 코드를 더 간결하고 강력하게 만들 수 있는 함수형 인터페이스들이 추가됐습니다.따라서 대표적인 함수형 메서드를 정리해 보았습니다.미리 들어가기에 앞서 람다 Stream 사용 시 단순 for 문 혹은 while 문 보다 성능이 떨어집니다.또한 불필요하게 너무 사용하게 되면 오히려 가독성을 떨어트릴 수 있습니다.일단 Stream 이란먼저 유용한 람다식 함수들을 배우기 전에 Stream 이란 무엇인지 간단하게 설명하겠습니다.Stream 은 데이터(리스트, 배열 등) 를 한줄(Stream)로 흘려보내면서 필요한 작업(변환,필터링등) 을 수행하는 기능입니다.쉽게 말해, 데이터를 하나씩 순서대로 흘려보내면서 변형하는 파이프라인 같은 것입니다.데이터 자체를 변경하지 않고, 가공해서..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.