1. Entity ManagerEntity Manager는 JPA의 핵심 구성 요소로, 엔티티 인스턴스의 생명주기를 관리하는 API이다. Entity Manager는 데이터베이스와 Java 객체 간의 중개자 역할을 한다.JPA에서 엔티티는 Persistence Context에서 관리되어야 하는데,Persistence Context를 도와주는 것이 Entity Manager다. 1 - 1. 주요 기능1 - 1 - 1. 엔티티 생명주기 관리엔티티의 생성, 수정, 삭제 등 생명주기 전반을 관리한다.엔티티는 비영속, 영속, 준영속, 삭제 상태가 될 수 있다.persist, merge, remove, close 메서드를 이용하여 엔티티의 상태를 변경할 수 있다. 1 - 1 - 2. Persistence Conte..
1. 로드 밸런싱이란?네트워크 트래픽을 여러 서버에 고르게 분산시켜 서버의 과부하를 방지하고 서비스의 가용성을 높이는 기술을 말한다. 이를 통해 특정 서버에 트래픽이 집중되는 것을 막고, 시스템의 성능과 안정성을 유지할 수 있다. 로드밸런서는 다양한 알고리즘을 사용하여 요청을 적절한 서버로 라우팅한다. 이러한 알고리즘에는 라운드 로빈, 최소 연결, IP 해시, 가중치 기반 등이 포함된다. 2. 클라이언트 사이드 로드 밸런싱로드 밸런싱은 클라이언트 사이드와 서버 사이드로 나뉘며, 두 방식은 각각의 장단점을 가지고 있다. 클라이언트 사이드 로드 밸런싱은 주로 마이크로서비스 아키텍처에서 사용되며, Netflix Ribbon과 같은 라이브러리를 통해 구현할 수 있다. 반면, 서버 사이드 로드 밸런싱은 AWS E..
1. ddl-auto 옵션ddl-auto 옵션은 Spring Boot Application에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다. 이 옵션은 application.properties, application.yml 같은 설정 파일에서 설정할 수 있다. ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 있다. 2. 각 옵션들 정리2 - 1. none데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다.데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하다.프로덕션 환경에서 주로 사용된다. 2 - 2. validate애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치..
https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. Heap힙은 완전 이진 트리를 기반으로 한 자료구조로, 최댓값 또는 최솟값을 빠르게 찾아내는 데 유용하다. 힙의 주요 특징완전 이진 트리부모 노드와 자식 노드 간에 특정한 순서가 있다.중복된 값을 허용한다.형제 노드 간에는 순서가 정해지지 않는다. 2. Max Heap과 Min Heap의 차이2 - 1. Max Heap(최대 힙)부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같다.루트 노드에 최댓값이 위치한다. 2 - 2. Min H..
0. JpaMetamodelEntityInformation.isNew(T entity)@Overridepublic boolean isNew(T entity) { if(versionAttribute.isEmpty()) || versionAttribute.map(Attribute::getJavaType).map(Class::isPrimitive).orElse(false)) { return super.isNew(entity); } BeanWrapper wrapper = new DirectFieldAccessFallbackBeanWrapper(entity); return versionAttribute.map(it -> wrapper.getPropertyValu..
1. MSA 개요MSA(Microservice Architecture)는 하나의 큰 애플리케이션을 여러 개의 작은 독립적인 서비스로 나누어 개발하는 소프트웨어 아키텍쳐 방식이다. 각각의 서비스는 독립적으로 배포 가능하고, 자체 프로세스에서 실행되며, 경량하된 통신 메커니즘(주로 HTTP)를 사용하며, 비즈니스 기능 단위로 구성된다. 1 - 1. 주요 특징독립적인 배포 가능성: 각 서비스는 독립적으로 배포할 수 있다.작은 팀 구성: 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있다.기술 스택의 다양성: 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있다. 2. 모놀리식 vs MSA2 - 1. 모놀리식 모놀리식은 하나의 큰 애플리케이션에 모든 기능이 통합되어 있다.단일 코드베이스와 데이터베이스..
오늘 Spring Data에서 제공하는 페이징과 정렬을 위한 두 가지 유용한 어노테이션인`@PageableDefault` 와 `@SortDefault` 에 대해 알게 되었다.이 어노테이션들은 컨트롤러 메서드에서 페이징과 정렬 기능을 쉽게 구현할 수 있게 해주는 도구다. 1. `@PageableDefault`Pageable 객체의 기본값을 설정하는 데 사용된다. 1 - 1. 주요 속성size: 페이지당 항목 수 (기본값: 10)page: 시작 페이지 번호 (기본값: 0)예시@PageableDefault(size = 20, page = 0) 2. `@SortDefault`정렬 기준의 기본값을 설정하는 데 사용된다. 2 - 1. 주요 속성sort: 정렬할 필드명direction: 정렬 방향 (ASC 또는 D..
1. 오늘의 문제 - 촌수 계산 - 백준 : 2644번https://www.acmicpc.net/problem/2644 2. 문제 풀이 전략DFS로 그래프 탐색을 하면 될 것 같고,양방향 그래프이고,사람들이 100명뿐이 안되니까 인접행렬 사용하면 될 것 같다. 3. 풀이package io.conduktor.demos.dfsbfs.hanghaecote99.middler;import java.io.*;import java.util.StringTokenizer;// 8. 촌수 계산 - 백준 : 2644 - DFS, BFSpublic class ChonNumber8 { static int N; static int targetA; static int targetB; static int M;..