목록전체 글 (767)
우노
Bulk Insert란?Bulk Insert는 데이터베이스에 여러 개의 데이터를 한 번에 삽입하는 기법으로,여러 번의 Single Insert 대신 한 번에 여러 레코드를 삽입하여 속도와 효율성을 개선할 수 있습니다.Single Insert vs Bulk InsertSingle Insert데이터를 하나씩 삽입하는 방식입니다. INSERT INTO table1 (col1, col2) VALUES (val11, val12);여러 번 반복되는 경우 INSERT INTO table1 (col1, col2) VALUES (val11, val12); INSERT INTO table1 (col1, col2) VALUES (val21, val22); INSERT INTO table1 (col1, col2) VA..
Spring에서 @Transactional, 어디에 적용할까?Spring에서 트랜잭션 관리를 위해 사용하는 @Transactional은 주로 Service 계층과 Repository 계층에 적용됩니다.두 계층에서의 사용법과 차이를 알아보고, 올바른 설계 방향을 살펴보겠습니다.Service 계층에서 @TransactionalService 계층은 비즈니스 로직을 처리하는 핵심 부분입니다.이 계층에 @Transactional을 사용하면 비즈니스 작업 단위 전체를 하나의 트랜잭션으로 묶을 수 있습니다.예제 @Service public class OrderService { @Transactional public void placeOrder(Order order) { order..
@Transactional 이란?@Transactional은 Spring에서 트랜잭션 관리를 자동화해주는 강력한 애노테이션입니다.메서드나 클래스에 선언하면, 트랜잭션이 시작되고 작업 완료 시 자동으로 커밋하거나 예외 발생 시 롤백됩니다.1. 메서드 수준에서 사용메서드가 실행되는 동안 트랜잭션이 시작됩니다. @Service class UserService(private val userRepository: UserRepository) { @Transactional fun createUser(user: User): User { userRepository.save(user) // 트랜잭션 내 작업 return user // 트랜잭션 커밋 } }2...
@Service의미: 서비스 계층(비즈니스 로직을 처리하는 계층)을 나타내는 클래스에 사용합니다.사용 목적: 애플리케이션의 핵심 비즈니스 로직을 담당하는 클래스임을 명확히 하기 위해 사용됩니다.주요 역할:비즈니스 규칙 및 트랜잭션 관리.다른 계층(@Repository, @Component)의 Bean을 사용하여 로직을 조합.데이터와 사용자 인터페이스 사이를 연결하는 가교 역할.@Component의미: 특정 계층에 속하지 않는 일반적인 클래스를 Spring Bean으로 등록할 때 사용합니다.사용 목적: 유틸리티, 공통 로직, 지원 클래스 등 다양한 곳에서 재사용될 수 있는 Bean을 등록합니다.주요 역할:특정 계층(Service, Controller, Repository)에 명시적으로 속하지 않는 클래스...
컨트롤러(Controller)와 서비스(Service)의 개념Spring Framework에서 컨트롤러(Controller)와 서비스(Service)는 애플리케이션 아키텍처의 중요한 부분으로, 각각의 역할과 책임이 명확히 나뉘어 있습니다.이 둘은 Spring MVC(Model-View-Controller) 패턴의 일부로, 애플리케이션의 데이터 흐름을 구조화하고 유지보수를 용이하게 합니다.컨트롤러(Controller)컨트롤러는 클라이언트의 요청을 받아 응답을 반환하는 역할을 합니다. 주로 RESTful API 개발에서 사용됩니다.역할사용자가 보낸 요청(Request)을 받고, 적절한 서비스를 호출하여 처리 결과를 반환(Response).URL 경로를 매핑하고 HTTP 요청을 처리.데이터를 직접 처리하지 않..
@SqlResultSetMapping@SqlResultSetMapping은 네이티브 쿼리의 결과를 JPA에서 사용할 수 있는 형식으로 매핑하기 위해 사용하는 어노테이션입니다.쉽게 말하면, 데이터베이스에서 가져온 데이터를 Entity나 DTO로 변환해주는 설계도라고 보면 됩니다.왜 필요한가요?기본적으로 JPA는 쿼리 결과를 자동으로 매핑해 주지만,복잡한 쿼리나 특정 구조의 데이터를 반환해야 할 경우 직접 매핑을 설정해야 합니다.@SqlResultSetMapping을 사용하면 이런 매핑 과정을 명확하고 간단하게 정의할 수 있습니다.어떻게 사용하나요?데이터베이스의 결과를 Entity로 매핑 (EntityResult)사용 예시 @SqlResultSetMapping( name = "UserMapping..
구성 요소 요약JPA (Java Persistence API) ├── ORM (Object-Relational Mapping) │ └── Entity ├── Spring Data JPA │ └── Repository │ ├── JpaRepository │ └── CrudRepositoryJPA : ORM을 Java에서 쉽게 사용할 수 있도록 정의한 표준 API입니다.ORM : 객체와 데이터베이스 간 매핑을 처리하는 기술입니다.Entity : 데이터베이스의 테이블과 매핑되는 자바 객체입니다.Spring Data JPA : JPA를 쉽게 사용할 수 있도록 도와주는 Spring 모듈입니다.Repository : 데이터베이스에 접근하기 위한 인터페이스..
@Entity목적JPA의 Entity 클래스는 데이터베이스 테이블에 매핑되는 객체입니다.데이터베이스 테이블과 자바 객체 간의 매핑을 담당합니다.어노테이션@Entity: 해당 클래스가 데이터베이스 테이블과 매핑된다는 것을 명시합니다.@Table(name = "table_name"): 데이터베이스 테이블 이름을 지정할 수 있습니다.@Id: 해당 필드가 기본 키(primary key)임을 지정합니다.@GeneratedValue: 기본 키 값의 자동 생성 전략을 지정합니다.예: GenerationType.IDENTITY@Column(name = "column_name"): 필드와 데이터베이스 컬럼 간의 매핑을 지정합니다.특징Entity 클래스는 데이터베이스 작업을 직접 수행하지 않고, JPA에서 데이터를 저장하..
DTO와 Entity의 관계DTO(Data Transfer Object)와 Entity는 역할과 사용 목적이 다르며,이로 인해 서로 명확히 구분해서 사용됩니다.DTO와 Entity의 차이항목DTOEntity역할데이터 전송에 사용되는 객체데이터베이스와 직접 연결된 객체목적클라이언트-서버 간 데이터 교환 간소화데이터베이스 테이블의 구조를 반영속성필요한 데이터만 포함, 가공된 데이터 가능데이터베이스의 컬럼에 직접 매핑되는 필드 포함위치주로 API 요청/응답에서 사용됨서비스 내부에서 사용됨종속성독립적, 데이터베이스와 무관데이터베이스와 밀접하게 연관DTO → Entity필수는 아닙니다.단순 조회만 수행하는 경우에는 DTO를 Entity로 변환할 필요가 없습니다.하지만, DTO 데이터를 기반으로 데이터베이스 저장,..
들어가기 앞서,Spring의 @Scheduled 작업은 기본적으로 싱글 스레드에서 실행됩니다.두 개 이상의 @Scheduled 작업이 정의되어 있어도, 병렬 스케줄링 설정을 하지 않으면 스프링의 기본 설정으로 인해 동시에 실행되지 않고 순차적으로 실행됩니다.해당 개념을 모르고 무작정 코드부터 짰다가 병렬 쓰레드로 동작하지 않아, 원인을 찾느라 시간을 많이 썼습니다.. ㅜㅜ@Scheduled 란?@Scheduled는 Spring 프레임워크에서 제공하는 스케줄링 작업을 정의하는 어노테이션입니다.특정 메서드를 주기적으로 실행하거나 예약된 시간에 실행할 수 있도록 설정하는 데 사용됩니다.Spring Scheduling 기능을 활성화하면, @Scheduled 어노테이션이 붙은 메서드가 자동으로 실행됩니다.주요 기..