본문 바로가기

전체 글

[JPA] entity의 cascade 와 db의 on delete cascade 차이 이해하기 TIL: JPA Cascade와 데이터베이스 ON DELETE CASCADE의 차이점개념적 이해JPA에서 cascade 옵션과 데이터베이스의 ON DELETE CASCADE는 비슷한 목적을 가지고 있지만, 작동하는 레벨과 방식이 완전히 다릅니다. 이러한 차이점으로 인해 개발자가 예상하지 못한 동작이 발생할 수 있습니다.JPA Cascade (Java 애플리케이션 레벨)JPA의 cascade는 Java 애플리케이션 내에서 엔티티 간의 연산을 전파하는 메커니즘입니다:작동 위치: 메모리 내 영속성 컨텍스트(Persistence Context)영향 범위: JPA가 관리하는 엔티티 객체에만 적용주요 목적: 엔티티 간의 작업(저장, 업데이트, 삭제 등)을 자동화구현 방식: Hibernate와 같은 JPA 구현체가 .. 더보기
[FE] 프론트 관련 내용 정리 TIL: React의 useEffect와 상태 관리 이해하기오늘 timer 의 시간이 0초가 되었을 때, 새로고침을 해야 모달이 뜨는 현상이 발생했습니다. 해당 내용을 학습하고자 useEffect와 상태관리를 공부하여, 0초가 되었을 때 새로고침 없이 modal 이 뜨도록 설정했습니다.1. useEffect란 무엇인가?useEffect는 React 훅(Hook)의 하나로, 컴포넌트에서 "부수 효과(side effect)"를 수행할 수 있게 해줍니다. 부수 효과란 데이터 가져오기, 타이머 설정, 이벤트 구독 같은 외부와의 상호작용을 말합니다.useEffect(() => { // 실행할 코드}, [의존성 배열]);2. 의존성 배열의 역할의존성 배열은 useEffect가 언제 실행될지 결정하는 중요한 요소입.. 더보기
Comparable vs Comparator Java에서의 객체 비교 방법: Comparable, Comparator, Lambda개요Java에서 객체를 정렬하거나 비교할 때 사용하는 세 가지 주요 방법에 대해 알아보겠습니다.비교 대상이 불분명할 때의 해결책Comparable 인터페이스class Fruit implements Comparable { private String name; private int price; public Fruit(String name, int price) { this.name = name; this.price = price; } @Override // 내림차순 구현 예시 public int .. 더보기
간호사 근무표 생성을 위한 알고리즘. 간호사 근무표란?간호사 근무표는 한 달 동안 각 간호사의 근무 일정을 한눈에 볼 수 있게 정리한 표입니다. 이 표는 각 날짜별로 누가, 어떤 유형의 근무(주간, 야간, 저녁 등)를 수행하는지 일목요연하게 보여줍니다.1. 기술 도입 배경간호사 근무표생성의 기본 원리에 대해 설명드리겠습니다. 위의 표는 간호사 근무 표 생성 전 단계입니다. 여기서 근무표를 완성하기 위해서는 약 300여 칸에 4가지 근무유형(Day,Evening,Night,Off)를 채워 넣는 과정을 진행하게 됩니다. 저는 다양한 조건들을 만족시키며, 해당 규칙표를 자동으로 생성하는 프로그램을 작성하려 합니다. 근무표 생성에는 여러가지 조건이 붙습니다. 300여 칸에 4가지 근무유형을 채워 넣는 과정은 단순해 보이지만, 실제로는 2^300개 .. 더보기
[Java] Stream 알아보기. Java Stream API 완벽 가이드목차Stream API란?Stream의 주요 특징Stream 생성 방법Stream 연산실전 예제주의사항 및 모범 사례1. Stream API란?Java 8에서 도입된 Stream API는 컬렉션의 요소들을 함수형 프로그래밍 방식으로 처리할 수 있게 해주는 기능입니다. Stream을 사용하면 데이터 처리 파이프라인을 구성하여 컬렉션의 요소들을 필터링, 매핑, 정렬, 그룹화 등 다양한 방식으로 처리할 수 있습니다.2. Stream의 주요 특징2.1 선언형 프로그래밍Stream API를 사용하면 "무엇"을 할지 선언하는 방식으로 프로그래밍할 수 있습니다. 기존의 반복문을 사용한 명령형 프로그래밍과 달리, 더 간결하고 가독성 높은 코드를 작성할 수 있습니다.2.2 파이프라.. 더보기
[JPA] N+1문제 정의 + 해결 전략 JPA N+1 문제 해결하기: 단계별 가이드1. N+1 문제가 뭘까요? N+1 문제를 이해하기 위해 먼저 실제 상황을 살펴보겠습니다.예를 들어 병원 근무표 신청 시스템이 있다고 할게요:근무자가 근무 신청을 합니다 (Request)각 근무자는 특정 병동에 소속되어 있죠 (WardMember)근무자의 정보도 있습니다 (Member)@Transactionalpublic List readWardRequest(Member member) { Ward myWard = member.getWardMember().getWard(); return requestRepository.findByWardMember_Ward(myWard) .stream() .map(WardRequestRespon.. 더보기
[JPA] API 서비스 흐름 알아보기. 1. 서비스 흐름 순서API 요청 처리 (Controller)클라이언트로부터 API 요청 수신RequestBody를 DTO 객체로 매핑해당 DTO를 Service 계층으로 전달비즈니스 로직 처리 (Service)Controller로부터 전달받은 DTO로 비즈니스 로직 수행필요에 따라 DTO → Entity 또는 Entity → DTO 변환데이터베이스 작업 (Repository)Service 계층에서 Repository 호출JPA를 통한 데이터베이스 접근 및 작업 수행  2. 코드 훑어보기병동에 소속된 근무 요청들을 조회하는 서비스 흐름을 예시로 코드를 살펴보겠습니다.api 요청을 controller 가 받고 필요한 서비스를 호출합니다.@GetMapping("/ward/request")public Resp.. 더보기
[JPA] Entity 설계하기. ERD 설계를 마친 후, 해당 테이블과 연동되는 Entity를 설계하는 과정을 공부해 보려 해요.제가 이번에 연습삼아 설계해볼 테이블은 다음과 같아요.  우선 @Entity 어노테이션을 사용합니다.@Entity@Table (name = "request")public class Request {} 다음 어노테이션을 통해, jpa가 관리하는 entity가 됩니다.또한 db의 request 테이블과 맵핑됩니다. 다음은 요청 키를 맵핑해 보겠습니다.pk임을 알리는 어노테이션이 필요합니다. @Id@Column (name = "request_id")private Long requestId; @ID 로 PK임을 지정하고, @Column으로 테이블의 컬럼과 맵핑합니다.  @ManyToOne(fetch = Fetch.. 더보기