본문 바로가기
반응형

전체 글456

equals와 hashCode를 함께 재정의 해야하는 이유 equals와 hashCode 메서드는 객체의 동등성 비교와 해시값 생성을 위해서 사용할 수 있다. 하지만, 함께 재정의하지 않는다면 예상치 못한 결과를 만들 수 있다. 가령, 해시값을 사용하는 자료구조(HashSet, HashMap..)을 사용할 때 문제가 발생할 수 있다.class EqualsHashCodeTest { @Test @DisplayName("equals만 정의하면 HashSet이 제대로 동작하지 않는다.") void test() { // 아래 2개는 같은 구독자 Subscribe subscribe1 = new Subscribe("team.maeilmail@gmail.com", "backend"); Subscribe subscribe2 .. 2025. 3. 13.
MutableList MutableList는 Kotlin에서 제공하는 변경 가능한 리스트 (mutable list) 입니다.즉, 요소를 추가, 삭제, 수정할 수 있는 리스트 타입입니다. 1. MutableList 생성 방법mutableListOf() 또는 ArrayList() 등을 사용하여 생성할 수 있습니다.val numbers = mutableListOf(1, 2, 3) // 변경 가능한 리스트val names = ArrayList() // Java의 ArrayList와 동일한 동작2. 주요 함수(1) 요소 추가 (add)val list = mutableListOf("Apple", "Banana")list.add("Cherry") // ["Apple", "Banana", "Cherry"]list.add(1, "Orange.. 2025. 3. 12.
JPA ID 생성 전략 JPA에서 ID를 생성하기 위해서는 직접 할당과 자동 할당을 사용할 수 있다.직접 할당: @Id어노테이션만을 사용하여 Id값을 직접 할당하는 방식자동 할당: @Id와 @GeneratedValue를 함께 사용해서 원하는 키 생성 전략을 선택하는 방식 @GeneratedValue의 strategy 옵션을 통해 생성 전략을 설정할 수 있는데, 여기에 올 수 있는 값인 GenerationType는 다음과 같다.@Target({ElementType.METHOD, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface GeneratedValue { GenerationType strategy() default GenerationType.A.. 2025. 3. 12.
2025-03-11 (화) ✅ 오늘의 학습 정리INNER JOIN과 LEFT JOIN의 차이를 이해하고, 데이터 조회 시 상황에 맞게 사용할 수 있도록 함.containOrNull()을 사용하여 리스트 내 요소를 안전하게 검색하고, 없을 경우 null을 반환하는 방식 학습.리플렉션을 활용한 setPrivateField() 구현 및 이슈 해결리플렉션이 예상대로 동작하지 않을 수 있는 문제를 발견하고 generateSequence를 활용해 해결.@MappedSuperclass를 활용한 공통 엔티티 관리 방법 학습테이블이 생성되지 않는 특성과 상속을 통해 코드 중복을 줄이는 방식을 배움.generateSequence의 활용 방법무한 시퀀스 생성 및 부모 클래스 탐색 등 다양한 활용법 익힘.🔹 1. INNER JOIN vs LEFT J.. 2025. 3. 11.
로그와 메트릭 로그서버가 동작할 때 서버의 상태와 동작 정보를 시간 경과에 따라 기록된 결과이다.시스템의 오류와 문제들을 쉽게 찾아낼 수 있도록 도와준다.메트릭반면, 메트릭은 시스템의 성능과 상태에 대한 통계적인 정보를 의미한다.메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽게 파악할 수 있고, 사업 현황에 관한 유용한 정보를 얻을 수 있다.가령, 메트릭은 DAU, Retension, CPU 사용량, 메모리 사용량 등이 있습니다.수집 경험 예시스프링 부트 액추에이터를 사용해 메트릭을 생성하고 프로메테우스에 저장한 다음 그라파나로 시각화한 경험로깅 LogBack 사용Grafana Loki 에 7일동안 보관하도록 설정로그 추적을 위해 MDC 사용수집한 지표 및 해당 메트릭 수집 이유CPU, 메모리, JVM 힙 사용량서비스.. 2025. 3. 11.
2025-03-10 (월) 📌 오늘 배운 핵심 요약✅ select, selectNew, selectFrom의 차이를 이해하고 적절한 상황에서 사용✅ like와 containOrNull의 차이를 구분하여 null 안전성 고려✅ EmbeddedId 내부 필드 접근 시 path(EmbeddedId, Field) 방식 활용✅ JDSL과 JPQL의 차이점을 비교하여 JDSL의 장점을 이해✅ KProperty1, KFunction1을 활용하여 프로퍼티 및 메서드 참조하는 방법 숙지✅ :: 연산자를 활용한 프로퍼티, 함수, 생성자 참조 활용법 학습1️⃣ select, selectNew, selectFrom 차이점JDSL에서 데이터를 조회할 때 사용하는 select, selectNew, selectFrom의 차이점을 정리하면 다음과 같다.se.. 2025. 3. 10.
데이터베이스 인덱스 인덱스는 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 백과사전의 색인과 같다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지하는 것이 특징이다.이러한 특징으로 인해 인덱스는 INSERT, UPDATE, DELETE의 성능이 희생된다는 것이 단점을 가지고 있다.인덱스 자료 구조 (MySQL InnoDB 기준)B+Tree와 같은 변형 B-Tree 자료구조를 이용해서 인덱스를 구현한다.기본 토대는 B-Tree 인덱스이기 때문에, 컬럼의 값을 변형하지 않고 인덱스 구조체 내에서 항상 정렬된 상태로 유지합니다.B-Tree(Balanced-Tree)B-Tree(Balanced-Tree)에서는 크게 3가지 노드가 존재한다.최상위에 하나의 루트 노드가장 하위 노드인 리프 노드실제 데이터 레코드를.. 2025. 3. 10.
2025-03-07 (금) 🚀 최종 정리✅ Serializable → JPA에서 복합 키 사용 시 필수✅ @EmbeddedId + @Embeddable → MySQL 복합 키 설정 시 권장 방식✅ require → 매개변수 검증을 간결하게 처리할 때 사용✅ Set?.orEmpty() → null 방지 및 안정적인 코드 작성 가능✅ optimizeReadOnlySet() → 메모리 최적화를 위해 사용✅ first() vs any() → 첫 번째 요소 조회 vs 요소 존재 여부 확인1. Serializable (직렬화)Serializable은 객체를 바이트 스트림으로 변환하여 저장하거나 네트워크로 전송할 때 사용된다.JPA에서 @EmbeddedId 또는 @IdClass를 사용할 때, 복합 키 클래스는 반드시 Serializable을.. 2025. 3. 7.
일급 컬렉션 일급 컬렉션(First-Class Collection)하나의 컬렉션을 감싸는 클래스를 만들고, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴아래 코드 중에서 Order의 List 자료구조를 감싼 Orders가 일급 컬렉션의 예시입니다.컬렉션을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태// 일급 컬렉션public class Orders { private final List orders; public Orders(List orders) { validate(orders); // 검증 수행 ... } public void add(Order order) { if (order == null) { thro.. 2025. 3. 7.
728x90
반응형