본문 바로가기
728x90
728x90

스프링부트6

[@Transactional은 만능이 아니다!] Checked Exception과 @Transactional: 초보 스프링 개발자를 위한 가이드 Checked Exception과 @Transactional: 초보 스프링 개발자를 위한 가이드스프링(Spring) 프레임워크는 개발 생산성을 높이고, 복잡한 트랜잭션 관리 및 예외 처리를 간소화하는 데 강력한 도구를 제공합니다. 하지만 초보 개발자들은 Checked Exception과 트랜잭션 처리에 대해 자주 혼란스러워합니다. Checked Exception은 발생 시 반드시 처리해야 하는 특징을 가지며, 이는 코드의 안정성을 보장하지만 스프링의 기본 트랜잭션 관리 규칙과 충돌할 수 있습니다.이 글에서는 Checked Exception과 @Transactional 어노테이션의 기본 개념을 설명하고, 트랜잭션 관리에서 Checked Exception의 중요성을 실제 애플리케이션 사례를 통해 다룹니다. .. 2025. 1. 23.
[Java; 자바] Java 오버로딩과 오버라이딩: 개념, 차이점, 그리고 스프링부트 활용 예제 Java에서는 동일한 이름의 메서드를 다양한 방법으로 사용할 수 있는 **오버로딩(Overloading)**과 상속 관계에서 상위 클래스의 메서드를 재정의할 수 있는 **오버라이딩(Overriding)**을 제공합니다. 이 두 개념은 객체지향 프로그래밍에서 중요한 역할을 하며, 코드의 유연성과 재사용성을 높이는 데 기여합니다. 이번 포스트에서는 오버로딩과 오버라이딩의 개념과 차이점을 살펴보고, 이를 이해하기 위한 예제를 통해 차근차근 알아보겠습니다. 더 나아가, 스프링부트(Spring Boot) 환경에서 이를 어떻게 활용할 수 있는지도 알아보겠습니다.1. 오버로딩(Overloading)이란?1.1 오버로딩의 정의오버로딩은 동일한 이름의 메서드를 매개변수의 타입, 개수, 순서를 다르게 하여 여러 개 정의하.. 2024. 9. 23.
[Spring; 스프링] 스프링에서 `final`과 `@RequiredArgsConstructor`로 의존성 주입(DI) 쉽게 이해하기 스프링 프레임워크를 사용하다 보면 **의존성 주입(Dependency Injection, DI)**이라는 말을 자주 듣게 됩니다. 의존성 주입은 객체 간의 의존 관계를 스프링이 대신 관리해주는 것을 의미하는데요, 이 과정을 효율적으로 하기 위해 final과 @RequiredArgsConstructor를 많이 사용합니다. 이 글에서는 이 두 가지 키워드가 무엇인지, 왜 사용하는지, 그리고 롬복(Lombok) 없이도 의존성을 주입하는 방법까지 알아보겠습니다.1. final 키워드는 무엇인가요?final은 자바에서 변수를 한 번만 초기화하고, 이후에는 변경할 수 없게 만드는 키워드입니다. 이 키워드를 사용하면 다음과 같은 장점이 있습니다:변경 방지: 해당 변수가 의도치 않게 변경되는 것을 방지합니다.안정성: .. 2024. 9. 23.
[Spring; 스프링] Swagger 설정 Spring Boot 프로젝트에서 Swagger를 설정하는 방법은 다음과 같습니다. 1. Maven 또는 Gradle 의존성 추가 Maven: io.springfox springfox-boot-starter 3.0.0 Gradle: implementation 'io.springfox:springfox-boot-starter:3.0.0' // 현재 사용 가능한 최신 버전으로 업데이트하세요 2. Swagger 설정 클래스 생성 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInf.. 2023. 10. 24.
[Spring; 스프링] SpringBoot JPA Entity 오늘은 SpringBoot JPA Entity에 대해 설명해드리겠습니다. 😊😊 SpringBoot JPA Entity란 스프링 부트에서 JPA를 사용하기 위해 정의하는 클래스입니다. JPA는 Java Persistence API의 약자로, 자바에서 관계형 데이터베이스와 객체를 매핑하는 기술입니다. @Entity 어노테이션을 사용하면 해당 클래스가 JPA 엔티티임을 선언할 수 있습니다. 엔티티는 데이터베이스의 테이블과 일대일로 대응하며, 각 엔티티 인스턴스는 테이블의 행을 나타냅니다. @Entity 어노테이션은 클래스 레벨에 적용하며, 엔티티의 이름은 기본적으로 클래스의 이름과 같습니다. name 속성을 사용하면 엔티티의 이름을 변경할 수 있습니다. 예를 들어, @Entity (name="student").. 2023. 10. 4.
[Spring; 스프링] @Transactional(readOnly=true) @Transactional(readOnly=true)는 스프링 AOP 기반의 어노테이션으로, 해당 어노테이션이 붙은 메서드가 트랜잭션을 시작하고 종료할 때 읽기 전용 모드로 동작하도록 지정하는 것입니다. 읽기 전용 모드는 데이터베이스에 대한 변경 작업을 수행하지 않고, 영속성 컨텍스트를 플러시 하지 않습니다. 이렇게 하면 성능상의 이점과 데이터 일관성을 얻을 수 있습니다. 예를 들어, JPA를 사용할 경우, 변경 감지 작업을 수행하지 않고, 엔티티와 스냅샷을 비교하는 과정을 생략할 수 있습니다. 또한 데이터베이스 드라이버가 지원한다면, DB에서도 읽기 전용 쿼리를 최적화할 수 있습니다. @Transactional(readOnly=true)는 데이터의 변경이 없는 읽기 전용 메서드에 사용하는 것이 좋습니다.. 2023. 10. 4.
728x90
728x90