목록분류 전체보기 (763)
우노
컨트롤러(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 어노테이션이 붙은 메서드가 자동으로 실행됩니다.주요 기..
에러 코드BigQuery Table에서 특정 레코드를 DELETE하려했지만, 아래 에러가 발생했습니다. UPDATE or DELETE statement over table '' would affect rows in the streaming buffer, which is not supported에러 발생 원인BigQuery는 데이터를 테이블에 영구적으로 저장하기 전에 스트리밍 버퍼(streaming buffer)라는 메모리 기반 저장소에 임시로 저장합니다.높은 데이터 수신 속도를 제공하기 위함입니다.에러 메시지는 UPDATE 또는 DELETE 문이 스트리밍 버퍼에 있는 행을 수정하려 했기 때문에 발생한 에러입니다.스트리밍 버퍼에 있는 데이터는 아직 테이블에 완전히 반영되지 않았기 때문에 이러한 행에 대해..
들어가기 앞서, Polling과 Pulling은 모두 클라이언트가 서버로부터 데이터를 가져오는 방식을 나타내지만, 두 용어는 약간의 차이가 있습니다. Polling Polling은 클라이언트가 주기적으로 서버에 요청을 보내어 새로운 데이터나 업데이트가 있는지 확인하는 방식입니다. 클라이언트는 일정한 시간 간격으로 서버에 요청을 보내며, 서버는 해당 시점에 가용한 데이터를 응답으로 전송합니다. 새로운 데이터가 없더라도 클라이언트는 계속해서 요청을 보내므로, 불필요한 통신 오버헤드가 발생할 수 있습니다. 실시간성이 중요하지 않은 경우나 업데이트 빈도가 낮은 경우에 적합합니다. Pulling Pulling은 클라이언트가 필요할 때마다 서버에 요청을 보내어 데이터를 가져오는 방식입니다. 클라이언트는 데이터가 필..
HTTP(Hyper Text Transfer Protocol)란? HyperText 문서(ex. html)를 주고받는 프로토콜입니다. ex) 클라이언트가 웹 브라우저에 URL을 입력하면, 웹 서버에 HyperText 문서를 요청하고 응답받는 과정이 진행됩니다. HTTP 요청(Request) 예제 GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 Accept: text/html,application/xhtml+xml,application/xml;q=..
문제 링크 https://leetcode.com/problems/maximum-subarray/description/ 풀이 해당 문제는 그리디 알고리즘(Greedy Algorithm)의 한 종류인 카데인 알고리즘(Kadane’s Algorithm)을 사용해서 해결할 수 있습니다. 카데인 알고리즘(Kadane's Algorithm)은 배열에서 연속된 부분 배열의 최대 합을 구하는 효율적인 알고리즘입니다. 이 알고리즘은 O(N)의 시간 복잡도를 가지며, 다음과 같은 단계로 진행됩니다. "현재 합"과 "최대 합"을 -inf(음의 무한대)로 초기화합니다. 배열을 순회하며 다음 두 가지 경우 중 큰 값을 “현재 합”으로 갱신합니다. 이전 인덱스까지의 “현재 합” + 현재 인덱스의 값 현재 인덱스의 값 “현..