목록전체 글 (768)
우노
선요약L4 로드 밸런서는 빠르고 간단한 트래픽 분배가 필요한 경우에 적합합니다.성능이 중요하고, 복잡한 애플리케이션 로직이 필요 없는 경우 유리합니다.L7 로드 밸런서는 애플리케이션 로직에 맞춰 세분화된 트래픽 분배가 필요한 경우에 적합합니다.고급 기능이 필요하거나 세션 유지와 동적 라우팅이 중요한 애플리케이션에서 유리합니다.들어가기 앞서,로드 밸런서는 네트워크 트래픽을 여러 서버나 리소스로 분산시켜서 시스템의 부하를 효율적으로 처리하고, 가용성을 높이는 역할을 합니다.로드 밸런서에는 L4 (Layer 4) 로드 밸런서와 L7 (Layer 7) 로드 밸런서 두 가지 주요 유형이 있습니다.이들은 OSI 모델의 서로 다른 계층에서 동작하며, 각기 다른 용도와 특성을 가지고 있습니다.L4 로드 밸런서 (Lay..
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 데이터를 기반으로 데이터베이스 저장,..