목차 Spring Data JPA는 데이터를 다루는 데 있어 강력한 도구다. 그중에서도 새로운 Entity인지 여부를 판단하는 기능은 데이터 처리 효율성과 무결성을 보장하는 데 중요한 역할을 한다. 이번 글에서는 Spring Data JPA가 새로운 Entity를 어떻게 식별하는지, 그리고 이를 구현하기 위해 필요한 핵심 원리를 간단히 정리해 보자. 선 요약 새로운 Entity 식별 기준기본적으로 JpaEntityInformation 인터페이스의 isNew() 메서드로 판단.@Version 필드와 @Id 필드의 값으로 새 객체 여부를 결정.@Version 필드의 역할필드 없음: 기본 로직으로 판단.Wrapper 타입: null 여부 확인.Primitive 타입: 기본값 여부 확인.@Id 필드와 키 ..
목차 스프링 부트(Spring Boot)로 개발을 진행할 때, 설정 파일에 정의된 값을 쉽게 주입하기 위해 @Value 어노테이션을 자주 사용한다. 이 어노테이션은 특정 클래스에 값을 주입하여 환경별로 달라질 수 있는 값을 유연하게 관리할 수 있는 유용한 방법을 제공한다. 이 글에선 @Value 어노테이션의 사용법과 함께 주의해야 할 몇 가지 사항에 대해 간단히 살펴보자. 선 요약 기본 사용법: @Value("${property.key}") 형식으로 설정 파일의 값을 주입한다.프로파일 적용 가능: 스프링 프로파일을 사용해 환경별 다른 값을 주입할 수 있다.주입 방식: 필드 주입, 생성자 주입, 세터 주입 중 상황에 맞게 선택하여 사용한다. -> 생성자 주입이 안전하고 테스트에 유리함.@Configurat..
목차서론 웹 개발 라이프사이클은 웹사이트나 웹 애플리케이션을 계획, 제작, 운영하는 전체 과정을 체계적으로 정리한 프로세스다. 이는 단순히 코드를 작성하는 것 이상으로, 아이디어 구상부터 지속적인 유지보수와 개선까지 아우르는 포괄적인 과정을 의미한다. 효과적인 웹 개발 라이프사이클은 프로젝트의 성공률을 높이고, 리소스를 효율적으로 활용하며, 고품질의 결과물을 일관되게 제공할 수 있게 해 준다. 이 라이프사이클 내에서 '기획'은 특히 중요한 위치를 차지한다. 기획이란 프로젝트의 방향을 설정하고, 구체적인 실행 계획을 수립하는 단계다. 이는 단순히 아이디어를 구체화하는 것을 넘어, 프로젝트의 목표, 범위, 요구사항, 제약사항 등을 명확히 정의하고 문서화하는 과정을 포함한다. 기획의 중요성을 조금 ..
N+1 문제는 데이터베이스를 사용하는 애플리케이션에서 자주 발생하는 성능 문제 중 하나로, 특히 ORM(Object-Relational Mapping) 도구를 사용할 때 자주 나타난다. 이 문제는 하나의 메인 쿼리를 실행한 후에, 그 결과로 얻어진 N개의 레코드 각각에 대해 추가적인 쿼리(N개의 쿼리)를 실행하는 상황에서 발생하며, 불필요하게 많은 쿼리를 보내게 되어 성능 저하를 초래한다. 요약하자면 N+1 문제는 다음과 같은 상황에서 발생한다. N개의 항목을 가져오는 쿼리를 실행한다.각각의 항목에 대해 추가로 1개의 쿼리를 실행한다.결과적으로, 처음에 실행한 1개의 쿼리(N개를 가져오는)와 각 항목에 대해 실행한 N개의 쿼리를 합쳐 N+1개의 쿼리가 실행된다. Example 이어서 코드로 예를 들어보..
프로젝트 초기에 CI/CD를 구성하며 최대 저장 개수를 정해놓지 않아 20기가 가까운 빌드가 쌓인 적이 있다. 그럴때 우선 해야 할 조치는 최대 저장 개수를 설정하는 것이고, 두 번째로 해야 할 일이 쌓여있는 빌드를 지워주는 것이다. 방법은 다음과 같다. 젠킨스 웹에서 Jenkins 관리>Script Console에 들어가 다음 코드를 실행시킨다.def job = Jenkins.instance.getItemByFullName("your-job-name")def builds = job.getBuilds()int buildCount = 0builds.each { build -> if (buildCount >= 5) { build.delete() } buildCount++}여기서 ..
자바에서 의존성 주입이란 객체 지향 프로그래밍에서 객체 간의 의존성을 외부에서 주입하는 것을 가리킨다. 이를 통해 객체 간의 결합도를 낮추고 코드의 유지보수성을 높일 수 있다. 이 글에서는 의존성 주입을 구현하는 몇 가지 방법과 특징에 대해 간단히 알아본다. 늘 그렇듯이 선요약부터: 생성자 주입: 강한 의존성을 보장하며 불변성을 유지할 수 있다.세터 주입: 유연하고 지연 주입이 가능하지만 의존성이 강제되지 않는다.필드 주입: 코드가 간결해지지만 가독성이 떨어지고 테스트가 어렵다.인터페이스 주입: 유연하지만 복잡도가 증가한다. Constructor Injection 생성자 주입은 객체가 생성될 때 필요한 의존성을 생성자를 통해 주입하는 방법이다.public class Service { private..
SQL에서 'UNION'과 'UNION ALL'은 두 개 이상의 SELECT 문에서 반환된 결과를 결합하는 데 사용된다. 말로 하니까 어려운데 예를 들어 아래와 같이 사용한다고 보면 된다.SELECT column1, column2 FROM table1UNIONSELECT column1, column2 FROM table2;그럼 'UNION'과 'UNION ALL', 두 명령어의 차이는 뭐냐, 결론부터 말하자면 '중복제거 연산의 유무'이다. 조금 상세히 정리하자면 다음과 같다. UNION 'UNION'은 결과 세트에서 중복된 행을 제거한다. 그러니까 두 SELECT 문에서 동일한 데이터를 반환하면 해당 데이터는 결과 세트에 한 번만 포함된다. 이와 같은 중복 제거 작업 때문에 'UNION' 은 'UNI..
목차 자바에서 기본 자료형(primitive type)은 null을 가질 수 없으며, 이는 자바의 설계 철학, 그리고 메모리 관리 방식에 기인한다. 구체적으로 이해하기 위해서는 기본 자료형과 객체 참조형(reference type)의 차이점을 포함해 자바의 설계 철학과 메모리 관리 방식까지 살펴볼 필요가 있다. 간결하게 요약해 보자. 기본 자료형 vs. 참조 자료형 기본 자료형 기본 자료형은 자바에서 가장 기본적인 데이터 타입이며, 값 자체를 저장한다. 아래와 같은 8개의 기본 자료형이 있다. 정수형: byte, short, int, long실수형: float, double문자형: char논리형: boolean기본 자료형은 메모리에서 고정된 크기의 공간을 차지하며, 실제 데이터 값을 직접 저장한다. ..
목차 자바 제네릭(Generic)은 자바 5에서 도입된 기능으로, 클래스, 인터페이스, 메서드의 데이터 타입을 지정하지 않고 사용할 수 있게 해 준다. 제네릭을 사용하면 코드의 재사용성이 높아지고, 타입 안전성이 보장되며, 코드의 가독성도 향상되는 장점이 있다. 이 글에서는 제네릭의 기본 개념에서 시작해 사용법, 예시 등을 간결히 정리한다. Basic Concepts 앞서 설명했듯이 제네릭은 클래스, 메서드 등에서 사용할 데이터 타입을 미리 지정하지 않고, 나중에 실제 사용할 때 구체적인 타입을 지정하도록 해준다. 이는 코드 재사용성을 크게 높일 수 있다. 제네릭 타입을 사용하는 클래스나 메서드는 다음과 같은 형태를 가진다. class 클래스이름 { private T 변수; public T 메..
로컬 스토리지(Local Storage), 쿠키(Cookies), 세션(Session)은 웹 개발에서 클라이언트 측과 서버 측의 데이터를 저장하고 관리하는 중요한 방법이다. 이들의 특징과 사용 사례, 보안 및 성능에 대해 간결히 정리해 보자. 선요약: 특성로컬 스토리지쿠키세션저장 용량각 도메인당 약 5MB각 쿠키당 최대 4KB서버 설정에 따라 다름수명영구적설정된 만료 시간까지브라우저 종료시 또는 세션 만료시접근 범위동일 도메인 내의 모든 페이지도메인과 경로에 따라 설정 가능서버에서만 접근 가능데이터 타입문자열문자열다양한 데이터 타입보안민감한 데이터 저장에 부적합HTTPS, HttpOnly로 보안세션ID를 통한 보안성능서버 통신 불필요, 빠름모든 HTTP 요청에 포함, 네트워크 성능에 영향서버 메모리 또..
- Total
- Today
- Yesterday
- 세모
- 알고리즘
- Python
- 백준
- BOJ
- 자바
- Backjoon
- 세계여행
- 맛집
- java
- 여행
- spring
- RX100M5
- 남미
- 면접 준비
- 유럽
- a6000
- 지지
- 리스트
- 기술면접
- 스트림
- 동적계획법
- 중남미
- 칼이사
- 유럽여행
- 야경
- 세계일주
- Algorithm
- 파이썬
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |