Project 썸네일형 리스트형 [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가 언제 실행될지 결정하는 중요한 요소입.. 더보기 [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.. 더보기 [프로젝트 Day 5] OAuth2 로그인 (Google) Day 4에 JWT 토큰을 이용한 로그인 기술을 소개했는데요. 해당 토큰을 발급 허가를 하기 위해서는 DB에 비밀번호를 저장하고, 보안에 관한 여러 가지 처리를 해야 한다는 서비스 측의 부담이 될 수 있습니다. 또한 사용자 측면에서도 매 서비스마다 새로 회원가입을 해야 하는 부담이 있습니다.. 따라서 해당 부담을 덜기 위한 기술이 바로 OAuth2라고 할 수 있습니다.OAuth2 기술이란?OAuth 2.0(Open Authorization 2.0, OAuth2)은 인증을 위한 개방형 표준 프로토콜입니다. 이 프로토콜에서는 Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공합니다. 예를 들어, 구글이 특정 유저에 대한 인증 요청.. 더보기 [프로젝트 Day 4] JWT 토큰 이용하기 JWT 토큰이란?JWT는 정보를 안전하게 주고받을 수 있는 방식을 정의한 표준이에요.사용자 정보를 담은 암호화된 토큰으로 Header 와 Payload 그리고 Signature 부분으로 나뉩니다.해당 토큰을 유저에게 발급해 준다면, 해당 토큰이 유효한 기간 동안 서버는 토큰의 유효성만 검증하면 로그인을 허가 해 줄 수 있고, db에 접근하여 암호를 대조하는 비용을 줄일 수 도 있고, 실제 암호가 통신 환경에 많이 노출되는 것을 막아 주므로 로그인 인증으로 널리 사용되는 기술 입니다. JWT 토큰 발행 방법.우선 의존성 추가 부터 진행해 줍니다. io.jsonwebtoken jjwt-api 0.12.6 io.jsonwebtoken jjwt-impl 0.12.6 runti.. 더보기 [프로젝트 Day 3] Youtube API 발급받기 및 데이터 추출하기. 프로젝트에서 유튜브 동영상을 재생목록으로 재 가공하여 서비스할 예정이기 때문에, 유튜브 api를 이용하여 검색 키워드나 목적에 맞게 동영상 목록을 추출해 보려 합니다. API란 무엇이고 왜 필요한 걸까요?소프트웨어 애플리케이션 간의 상호작용을 가능하게 해주는 인터페이스쉽게 말해, API는 서로 다른 시스템이나 프로그램이 정보를 주고받거나 기능을 사용할 수 있도록 해주는 규칙이나 프로토콜의 집합을 말합니다. 그러면 유튜브 api를 발급받으면 뭘 제공받는 걸까요? 대표적으로 영상 검색 요청을 조건에 맞게 보내면 해당 조건에 맞는 데이터를 반환해 줍니다. 영상 검색, 영상 정보 조회, 등 다양한 데이터를 조회할 수 있습니다. 하지만 너무 많은 데이터 요청은 비용을 발생시킬 수 있습니다. 발급받은 api 키가 .. 더보기 이전 1 2 다음