Java instanceof 연산자의 성능과 설계 원칙

? 궁금증 오늘 JAVA 기초 스터디 발표를 듣던 중, instanceof 연산자가 피연산자가 어떤 클래스의 인스턴스인지, 하위 클래스인지, 또는 인터페이스 구현체인지 여부를 확인한다는 것을 배웠습니다. 이 과정에서 클래스 계층 구조를 확인해야 한다는 점이 '무거운 연산이 아닐까?'라는 궁금증을 갖게 되었습니다. 왜냐하면 특히 깊은 상속 구조를 가진 클래스...

2025년 5월 19일
·
0개의 댓글
·

EntityGraph에서 QueryDSL 프로젝션으로

✏️    주문 상세 조회 API를 개발하면서 N+1 문제를 해결하기 위한 두 가지 접근법, EntityGraph와 QueryDSL 프로젝션을 비교 검토했다. 초기에는 JPA의 EntityGraph를 적용했으나 실제 쿼리 로그를 분석하며 몇 가지 개선이 필요한 부분을 발견했다. >    EntityGraph는 코드가 간결...

2025년 2월 18일
·
0개의 댓글
·

인증 모듈과 도메인 개발, 어떻게 분리할 수 있을까?

✏️    주문 상세 조회 API를 개발하면서 N+1 문제를 해결하기 위한 두 가지 접근법, EntityGraph와 QueryDSL 프로젝션을 비교 검토했다. 초기에는 JPA의 EntityGraph를 적용했으나 실제 쿼리 로그를 분석하며 몇 가지 개선이 필요한 부분을 발견했다. >    EntityGraph는 코드가 간결...

2025년 2월 13일
·
0개의 댓글
·

DIP(Dependency Inversion Principle)

✏️    DIP(Dependency Inversion Principle)

2025년 2월 12일
·
0개의 댓글
·

Cascade (영속성 전이)

✏️ 영속성 전이(Cascade)와 고아 객체 제거(orphanRemoval) 옵션

2025년 2월 11일
·
0개의 댓글
·

JPA에서 데이터 무결성을 보장하는 필드 제약 조건 이해하기

✏️    JPA는 데이터베이스와 객체 간 매핑을 처리하는 중요한 프레임워크로, 다양한 필드 제약 조건을 제공한다. 그러나 각각의 속성은 적용되는 계층과 목적이 다르기 때문에 이를 혼동하지 않고 올바르게 사용해야 한다.

2025년 1월 13일
·
0개의 댓글
·

ORM과 JPA를 사용하는 이유: 객체-관계 패러다임의 불일치 해결

객체지향 프로그래밍과 관계형 데이터베이스 간의 패러다임의 불일치 관점에서 JPA와 같은 ORM의 효율성을 학습했습니다.

2024년 12월 18일
·
0개의 댓글
·

payload

payload STOMP 메시징에서 payload(페이로드)는 실제로 주고받는 메시지의 내용물이다. > - 서버로부터 실제로 받게 될 메시지 데이터 > - 어떤 형태로 받을지 지정하고(getPayloadType) > - 받은 후 어떻게 처리할지 정의(handleFrame)하는 데 사용된다. 구독 자체에는 payload가 필요 없지만, 구독 후 메시지를 ...

2024년 11월 21일
·
0개의 댓글
·

MockMvc 직접 설정 vs 어노테이션 사용

MockMvc를 직접 설정하는 경우와 그 문제점 직접 설정하는 경우, MockMvc 객체를 수동으로 생성하고, 컨트롤러를 수동으로 주입하거나, 의존성들을 수동으로 모킹해야 한다. 이를 통해 테스트 환경을 구성하는 데 많은 코드가 필요하고, 번거로운 설정 작업이 동반된다. 1. MockMvc 수동 설정 예시 문제점: MockMvc 객체를 매번 수동으로 ...

2024년 11월 21일
·
0개의 댓글
·

AutoConfigureMockMvc

@AutoConfigureMockMvc는 Spring Boot에서 테스트를 쉽게 하기 위해 제공하는 어노테이션이다. 주로 Spring MVC의 컨트롤러 테스트를 할 때 사용되며, MockMvc를 자동으로 설정하고 주입해준다. 이를 통해 컨트롤러 계층을 별도로 실행하지 않고도 요청과 응답을 모킹하여 테스트할 수 있다. > #### MockMvc를 직접 설정...

2024년 11월 21일
·
0개의 댓글
·

함수형 인터페이스

함수형 인터페이스(Functional Interface)는 자바에서 람다식을 지원하기 위해 도입된 인터페이스의 종류다. 특징 ① 단 하나의 추상 메서드를 가짐 단 하나의 추상 메서드만을 가지는 인터페이스인데 이는 단 하나만 가지고 있어야 람다식과 인터페이스의 메서드가 1:1로 연결될 수 있기 때문이다(default, static, private은 가능,...

2024년 4월 6일
·
0개의 댓글
·
post-thumbnail

Stream API와 람다를 통한 병렬 처리

Java의 Stream API > Java 8에 도입된 기능으로 데이터의 흐름을 다루기 위한 선언형 API다. > 스트림을 사용하여 필터링, 매핑, 정렬 등 다양한 데이터 처리 작업을 적용할 수 있으며 최종 결과를 배열이나 컬렉션으로 변환할 수 있다. > 스트림은 데이터 처리 작업을 연속적인 파이프라인으로 나타낼 수 있어 가독성이 높고 병렬 처리를 쉽게 ...

2024년 4월 6일
·
0개의 댓글
·

Stream

연속적인 데이터의 흐름 또는 데이터를 전송하는 소프트웨어 모듈을 가리키며, 연속된 데이터의 단방향 흐름을 추상화한 것이다. > 스트림은 자료의 입출력을 도와주는 중간 매개 역할을 하며 메모리의 원시 데이터를 프로그래머가 사용할 수 있는 데이터로 바꾸어주는 역할도 수행한다. 어느 한 쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송...

2024년 4월 6일
·
0개의 댓글
·

람다식과 Collections.sort() 메서드

Comparator > 함수형 인터페이스로, 두 개의 객체를 인자로 받아 그들의 순서를 비교하는 메서드인 compare을 제공하여 객체의 정렬을 가능하게 한다. .compare() 구현 반환 값이 Comparator인 메서드를 할당한다. Collections.sort() Collections.sort(List list, Comparator c) 람...

2024년 4월 6일
·
0개의 댓글
·

함수형 인터페이스 메서드 참조

이미 정의된 메서드를 직접 참조하여 람다 표현식을 더 간결하게 작성할 수 있다. 유형 ① 정적 메서드 참조 클래스명::메서드명 ② 인스턴스 메서드 참조 객체참조::메서드명 ③ 특정 객체의 인스턴스 메서드 참조 클래스명::메서드명 ④ 생성자 참조 클래스명::new

2024년 4월 6일
·
0개의 댓글
·

람다식

프로그래밍 언어에서 함수(메서드)를 간단한 식(expression)으로 표현하는 방식. > > Java에서 람다식은 익명함수(anonymous function)의 한 형태로, 메서드에 대한 구현을 간결하게 표현하는 방법이다. 함수와 메서드 함수와 메서드는 근본적으로 동일하지만, 함수는 일반적인 용어이고, 메서드는 객체지향 개념에서 사용되는 용어다. 함수는...

2024년 4월 6일
·
0개의 댓글
·

람다식 작성 예시

반환값이 있는 메서드의 경우, return문 대신 식(expression)으로 대신할 수 있다. 식의 연산 결과가 자동으로 반환값이 되기 때문이다. 이때 문장이 아닌 '식'이므로 끝에 ;을 붙이지 않는다. 람다식에 선언된 매개변수의 타입은 추론이 가능한 경우 생략할 수 있다. 선언된 매개변수가 하나일 경우 괄호 ()를 생략할 수 있다. 단,...

2024년 4월 6일
·
0개의 댓글
·

제네릭의 제약과 제한

제약 요약 ① 제네릭 클래스의 static 멤버에 타입변수를 활용할 수 없다(∵정적 바인딩). ② 제네릭 타입을 선언한 메서드는 static 멤버가 될 수 있다. 클래스가 로드될 때 정적 제네릭 메서드도 메모리에 로드되지만, 타입 매개변수는 구체적 타입으로 결정되지 않다가, 호출될 때 전달된 인수를 기반으로 타입이 결정되기 때문이다. ③ 객체 / 배열 ...

2024년 4월 6일
·
0개의 댓글
·

자바 제네릭스와 제네릭

제네릭스 > 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입을 체크해주는 기능 도입 배경 기존의 컬렉션 프레임워크는 Object 타입을 사용하여 모든 종류의 객체를 하나의 자료구조에 저장할 수 있었다. 이로 인해 컬렉션의 요소를 활용하기 위해 다운캐스팅을 수행하는 경우가 많았는데, 이는 런타임 시에 타입 불일치 오류(ClassCas...

2024년 4월 6일
·
0개의 댓글
·

Map 인터페이스

키를 값에 매핑하는 객체로, Map에는 중복 키가 포함될 수 없고 각 키는 최대 하나의 값에 매핑될 수 있다. 따라서 키를 이용하여 값을 검색하거나 저장할 수 있는 구조의 인터페이스다. > 키의 순서나 값의 순서를 보장하지 않고 키와 값 모두 null이 될 수 있다. 구현 클래스 HashMap 해시 테이블을 사용하여 요소를 저장하며 순서를 보장하지 않...

2024년 4월 6일
·
0개의 댓글
·