
Aggregate란?도메인 주도 설계(DDD)에서 도메인 객체들의 논리적인 그룹을 의미한다.여러 개의 엔티티(Entity)와 밸류 오브젝트(Value Object)를 묶어서 하나의 일관성 있는 변경 단위로 관리하는 개념이다.Aggregate 내부 객체들은 강하게 연관되어 있고, 외부에서는 Aggregate 전체를 하나의 단위로 다룬다. Aggregate Root (애그리게이트 루트)Aggregate 안에 있는 여러 객체 중에서 대표가 되는 핵심 객체를 Aggregate Root라고 한다.외부에서 Aggregate 내부 상태를 변경하거나 조회할 때는 항상 Aggregate Root를 통해서만 접근해야 한다.Aggregate Root가 내부 객체에 대한 모든 일관성과 상태 변경을 관리한다. Aggreg..

최근 대용량 데이터를 다뤄야 하는 프로젝트가 많아지고 있다.하루에 수십만 건 이상의 데이터를 정제하거나 외부 API와 싱크 맞추는 작업이 반복된다면, 우리는 자연스럽게 배치 처리(Batch Processing)를 고민하게 된다.그리고 스프링 진영에서는 이를 위한 강력한 도구인 Spring Batch를 제공한다. ✅ Spring Batch란?Spring Batch는 대량의 데이터를 처리하기 위한 배치 처리 프레임워크다.Spring의 기반 위에서 동작하며, 신뢰성 있는 트랜잭션 처리, 로깅, 재시도, 청크 기반 처리, 병렬 처리 등을 지원한다.즉, 단순한 for문 돌리는 수준의 처리가 아니라 엔터프라이즈급 대량 데이터 처리에 필요한 모든 요소를 갖춘 프레임워크다. 📦 Spring Batch는 언제 사용..

✅ 더티 체킹(Dirty Checking)이란?"영속성 컨텍스트에 저장된 객체의 상태가 변경되었는지 감지하여, 변경이 있으면 DB에 반영하는 기능"이다.다시 말해, update 쿼리를 직접 쓰지 않아도, 엔티티의 필드 값을 바꾸고 트랜잭션을 커밋하면, JPA가 자동으로 SQL을 만들어 실행해준다. 💡 예제 코드로 이해해보자.@Transactionalpublic void changeUsername(Long id, String newName) { Member member = em.find(Member.class, id); // 1. 조회 (영속 상태) member.setName(newName); // 2. 값 변경 (영속 상태 내부에서) // 3. 커밋 시..

오늘은 DFS/BFS 알고리즘 문제를 풀어보려 한다.우선 DFS/BFS 알고리즘에 대해 잘 모르는 분들은 다음 포스팅을 참고하자. [알고리즘] DFS(Depth-First Search) 알고리즘이란? BFS(Breadth-First Search) 알고리즘이란?오늘은 DFS / BFS 알고리즘에 대해 알아보자.그래프를 탐색할 때 주로 사용되는 두 가지 대표적인 탐색 방법이 바로 DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)이다.이 두 알고리즘은 탐색 순서와 사dandev.tistory.com 문제는 다음과 같다.주어진 숫자 배열 numbers에서 각 숫자 앞에 + 또는 -를 붙여서 만든 식의 결과가 target이 되는 경우의 수를 구하자. 🧠 문제 접근DFS(깊이 우선 탐색)를 이용해 모든 경우의..

셀프 조인이란 무엇인가?먼저 개념부터 정리해보자.셀프 조인(Self Join)은 하나의 테이블을 자기 자신과 조인하는 것을 말한다.즉, 같은 테이블을 두 번 불러와서 서로 연결하는 거다.조인이라고 하면 원래는 두 개의 다른 테이블을 엮는다고 생각하기 쉽지만, 가끔은 같은 테이블 안에서 서로 연결해야 할 때가 있다.그럴 때 셀프 조인을 쓰는 거다. 셀프 조인이 필요한 상황셀프 조인은 계층적 관계를 표현하거나, 같은 테이블 내의 값들을 비교할 때 주로 쓰인다. 예시를 들어보자. 1. 상사-직원 관계 (계층 구조)가장 대표적인 예가 상사-직원 관계다.아래처럼 EMPLOYEE라는 테이블이 있다고 해보자. EMP_IDEMP_NAMEMANAGER_ID1홍길동NULL2이몽룡13성춘향14김철수2 MANAGER_ID는..

오늘은 카카오의 코딩테스트 기출 이모티콘 할인 행사 문제를 풀어보려고 한다.난이도 Lv.2라 쉽게 봤는데 생각보다 빡셌다.(체감상 Lv.3에 가까운 Lv.2가 아닌가 싶다.) 📝 문제 간단 요약이 문제는 다음과 같은 상황을 다룬다.카카오톡에서 이모티콘 플러스 가입자를 늘리고 싶어 한다.이모티콘마다 10%, 20%, 30%, 40% 할인율 중 하나를 선택해 판매할 수 있다.유저는최소 몇 % 이상 할인해야 살지 결정한다.살 이모티콘 총합 금액이 일정 기준을 넘으면 구매를 취소하고 플러스 서비스에 가입한다.목표는 두 가지다.가입자 수를 최대로 만든다.가입자 수가 같다면 매출을 최대로 만든다. 🤔 어떻게 접근할까?문제를 처음 보면 어떻게 할인율을 정해야 하나? 라는 고민이 든다.하지만 할인율이 4가지 뿐이..

✨ 시리즈 구성1. [스프링] 스프링 핵심 원리와 객체 지향 설계 — 다형성과 역할/구현 분리, SOLID, 그리고 DI 컨테이너 [스프링] 스프링 핵심 원리와 객체 지향 설계 — 다형성과 역할/구현 분리, SOLID, 그리고 DI 컨테이오늘은 스프링(Spring) 프레임워크의 핵심 원리를 다루어 보려고 한다.스프링은 자바 개발에서 거의 표준처럼 쓰이는 프레임워크이지만, 그 근저에는 매우 중요한 객체 지향 설계 원리가 숨어 있dandev.tistory.com2. [스프링] 스프링 핵심 기능 — 스프링 컨테이너, 빈, 싱글톤, 컴포넌트 스캔, 의존관계 자동 주입, 빈 생명주기, 빈 스코프 앞선 글에서 스프링의 철학과 객체 지향 설계 원리에 대해 다루어보았다.이번에는 좀 더 실질적인 스프링의 핵심 기능에 대..

오늘은 DFS / BFS 알고리즘에 대해 알아보자.그래프를 탐색할 때 주로 사용되는 두 가지 대표적인 탐색 방법이 바로 DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)이다.이 두 알고리즘은 탐색 순서와 사용하는 자료구조가 다르다.아래에서 개념과 동작 원리, 그리고 Python, Java, Kotlin 코드 예제까지 함께 살펴보자. DFS (Depth-First Search) 란?DFS는 깊이 우선 탐색이라고도 불린다. 말 그대로 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘이다.DFS 동작 원리스택(stack) 자료구조를 사용하거나 재귀(recursion) 로 구현할 수 있다.하나의 분기를 최대한 따라가면서 탐색을 진행하다가, 더 이상 갈 곳이 없으면 되돌아오면서 다른 분기를 탐색한다.동작 과정 ..

오늘은 스프링(Spring) 프레임워크의 핵심 원리를 다루어 보려고 한다.스프링은 자바 개발에서 거의 표준처럼 쓰이는 프레임워크이지만, 그 근저에는 매우 중요한 객체 지향 설계 원리가 숨어 있다.특히 다형성, 역할과 구현의 분리, 그리고 SOLID 원칙(OCP, DIP) 등은 스프링을 이해하기 위한 핵심 개념이라 할 수 있다.이 글에서는 초보 개발자도 이해할 수 있도록 차근차근 풀어 쓰고자 한다.자 그럼 스프링 핵심 원리를 이루는 것들을 함께 공부해보자. 객체 지향 설계란 무엇인가?먼저 객체 지향 설계(Object Oriented Design)에 대해 이야기하자.객체 지향 프로그래밍이란 프로그램을 “데이터와 기능을 하나로 묶은 객체” 단위로 설계하고 구현하는 것이다.자동차라는 객체가 있으면, 이 자동차..

오늘은 2022 KAKAO TECH INTERNSHIP 기출 문제를 풀어보려한다. 문제 링크는 다음과 같다. 나는 코틀린으로 문제를 풀었다. 문제를 정리해보자. ✅ 문제 핵심1. 주어진 설문지(survey)와 사용자의 선택(choices)을 통해 성격 유형을 결정하는 문제이다.2. 성격 유형은 4개의 지표로 구분되며, 각 지표마다 두 가지 유형 중 점수가 높은 쪽을 선택한다.3. 설문 항목마다 “비동의” 쪽, “동의” 쪽에 각기 다른 성격 유형이 매핑된다.예) “AN”이면 비동의 시 A, 동의 시 N이 점수를 얻는다.4. 선택지는 총 7단계이며, 4를 기준으로1~3 → 비동의 쪽이 점수 획득5~7 → 동의 쪽이 점수 획득4 → 점수 없음.5. 각 선택지에 따른 점수는 다음과 같다.매우 비동의 / 매우 ..
- Total
- Today
- Yesterday
- 알고리즘
- 해커랭크 자바
- 22 정보처리 산업기사
- 백준
- hackerrank challenges
- JPA
- 이코테
- challenges
- hackerrank
- 풀이
- 자바
- Kotlin
- 정보처리산업기사 공부법
- Java
- 그리디
- 강의
- ORM
- 해커랭크 챌린지
- 해커랭크 자바 챌린지
- 자바의 정석
- 정보처리산업기사
- 코드
- Spring Security
- 정보처리 산업기사
- 22 정보처리산업기사
- 소스코드
- 해커랭크
- 코틀린
- 챌린지
- 디버깅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |