프레임워크와 라이브러리 21

[React Custom Hooks] 로직을 재사용하는 가장 React스러운 방법

React Custom Hooks 리액트 훅을 사용하다 보면, useState, useEffect, useRef 등 반복되는 로직이 여러 컴포넌트에 등장하는 경우가 많습니다. 이때 공통 로직을 재사용하고, 컴포넌트는 UI에만 집중할 수 있도록 도와주는 것이 바로 커스텀 훅(Custom Hook)입니다. 1. 커스텀 훅이란?커스텀 훅은 이름 그대로 개발자가 직접 정의한 훅 함수입니다. 내부적으로는 useState, useEffect 등 기존 훅을 사용해 공통 로직을 추상화합니다.규칙이름은 반드시 use로 시작해야 합니다 (useMyHook)일반 함수지만 훅 규칙(Hooks Rules)을 따라야 합니다최상위에서만 호출조건문이나 반복문 안에서는 호출하지 말 것 2. 간단한 예제a. 윈도우 크기 추적 훅i...

[React Hooks] useState부터 커스텀 훅까지

React Hooks React 16.8부터 등장한 Hooks(훅)은 함수형 컴포넌트에서도 상태 관리와 사이드 이펙트를 다룰 수 있게 해주며, 컴포넌트 구조를 더욱 직관적으로 바꿨습니다. 이 글에서는 자주 사용되는 기본 훅부터 커스텀 훅 제작까지 핵심 내용을 정리해드립니다. 1. 리액트 훅이란?기존에는 컴포넌트의 상태나 라이프사이클을 제어하려면 클래스형 컴포넌트를 써야 했습니다. 하지만 React Hooks는 함수형 컴포넌트에서도 다음과 같은 기능을 제공해줍니다.상태 관리 (useState)컴포넌트 생명주기 대응 (useEffect)외부 DOM 접근 (useRef)성능 최적화 (useMemo, useCallback)컨텍스트 사용 (useContext).etc 2. 가장 많이 쓰는 기본 훅a. use..

[JPA 생명 주기] Cascade와 OrphanRemoval 완전 이해하기

영속성 전이(Cascade)와 고아 객체 제거(OrphanRemoval) JPA를 사용하다 보면, 연관된 엔티티도 함께 저장하거나 삭제하고 싶을 때가 많습니다.예를 들어, 게시글(Post)을 저장하면서 댓글(Comment)도 함께 저장하려면 어떻게 해야 할까요?이럴 때 사용하는 기능이 바로 이것입니다.Cascade (영속성 전이): 연관 엔티티에 대한 생명주기 자동 전파OrphanRemoval (고아 객체 제거): 부모 객체와의 관계가 끊어진 자식 엔티티 자동 삭제  1.  영속성 전이(Cascade)란?부모 엔티티의 상태 변화(Persist, Merge, Remove 등)가 자식 엔티티에 전파되도록 하는 기능입니다.예를 들어, 부모 객체를 저장할 때, 연관된 자식 객체도 자동으로 저장되게 하려면 Cas..

[JPA 관계 매핑] 객체 간 관계를 데이터베이스에 자연스럽게 표현하는 법

JPA의 관계 매핑 JPA는 객체 간의 연관 관계(association)를 데이터베이스의 외래 키 관계로 변환해주는 기능을 제공합니다. 객체지향에서는 필드 참조로 관계를 표현하고, 데이터베이스에서는 외래 키(Foreign Key)로 표현하죠.이 둘을 매끄럽게 연결해주는 것이 바로 JPA의 관계 매핑(association mapping)입니다. 이 글에서는 1:1, 1:N, N:1, N:N 관계의 표현 방식과 주의사항, 실전 팁까지 모두 알아봅시다. 1.  왜 관계 매핑이 중요한가?객체 지향 프로그래밍에서는 객체 간의 참조(Reference) 를 사용하지만, 관계형 데이터베이스에서는 외래 키(Foreign Key) 를 사용해 관계를 표현합니다.즉, 다음과 같은 차이가 존재합니다. 객체 지향 세계 관계형 ..

[JPA] 객체와 데이터베이스를 잇는 다리

JPA(Java Persistence API) JPA(Java Persistence API)는 자바 애플리케이션에서 데이터베이스와의 상호작용을 단순하고 직관적으로 만들어주는 ORM 기술입니다. 복잡한 SQL을 직접 작성하지 않아도 객체 중심의 프로그래밍을 통해 데이터베이스를 다룰 수 있게 해주며, 유지보수성과 생산성을 높여줍니다. 이 글에서는 JPA의 기본 개념부터 핵심 동작 원리, 주요 어노테이션, 실전 예제까지 한 번에 정리해보겠습니다. 1. JPA란 무엇인가?JPA(Java Persistence API)는 Java 애플리케이션에서 관계형 데이터베이스를 객체 지향적으로 다룰 수 있도록 도와주는 표준 API입니다. 즉, 복잡한 SQL문 없이도 객체를 DB 테이블에 매핑하고, 저장하고, 조회할 수 있게..

[ORM] 객체와 데이터베이스의 간극을 메우는 기술

ORM(Object-Relational Mapping) 백엔드 개발을 하다 보면 객체 지향 언어와 관계형 데이터베이스(RDB) 사이의 언어 장벽을 실감하게 됩니다. 하나는 객체 기반이고, 다른 하나는 테이블 기반이기 때문이죠. 이 둘의 불일치를 매끄럽게 연결해주는 기술이 바로 ORM(Object-Relational Mapping)입니다. 이 글에서는 ORM의 개념, 장단점, 동작 방식, 그리고 대표적인 ORM 프레임워크를 설명합니다. 1. ORM이란?ORM(Object-Relational Mapping)은 프로그래밍 언어의 객체(Object)와 데이터베이스의 테이블(Row/Column 구조) 사이를 매핑(Mapping)해주는 기술입니다.쉽게 말해, 자바, 파이썬 같은 객체 지향 언어에서 사용하는 클래스..