분류 전체보기 30

[Spring_JPA] N+1 문제 해결 방법

N+1 문제 해결 방법 (feat.플러스주차 과제 트러블 슈팅) 지난 주부터 JPA심화, 테스트코드, 성능최적화를 배우고 있다. JPA에서는 데이터베이스와 객체 지향 프로그래밍 간의 상호 작용을 효율적으로 관리하고,성능을 최적화하기 위한 고급 기술을 학습하여 대규모 데이터를 다루는 서비스를 설계하고 유지하는 데 필요한 핵심 능력을 기른다. 또한, 테스트 코드를 작성하여 기능들이 정확히 작동하는지 검증하여 배포 전에 테스트를 통해 잠재적인 오류를 사전에 발견하고,이를 방지하기 위해 기능들을 다방면에서 테스트 하는 노력을 한다. 마지막으로 성능 최적화로 속도를 개선하고, 리소스를 효율적으로 사용하여 서비스 품질 개선과 더 많은 요청을 안정적으로 처리할 수 있는 시스템을 구축하기 위해 리팩토링을 진행하여 서비..

아웃소싱 프로젝트 KPT

재웅이연의 삼성 딜리버리 배달 앱 서비스 프로젝트2024.12.03 ~ 2024.12.09 KPT 회고회고를 바탕으로, 다음 스텝으로 나아가보자.실제로 많은 회사들이 프로젝트가 종료될 때마다 회고를 진행하고, KPT회고 방법론을 아주 많이 적용한다.공부한 것, 배운 것 보다는 "협업"을 하며 느낀 점, 앞으로 더 잘 하고 싶은 점과 관련된 이야기를 많이 나누자!KPT회고 방법 참고하기https://techblog.woowahan.com/2677/ttps://brunch.co.kr/@jinha0802/35 Keep - 현재 만족하고 있는 부분모르는 부분에 대해 질문하고, 답변을 주고받으면서 문제를 해결 할 수 있었다. 그로인해 어려운 문제나 막히는 부분에 대해 도움을 주며 협력하는 분위기가 조성되어 좋았다..

[Spring] Cookie 생성 오류

쿠키를 이용하여 장바구니를 저장하는 로직을 만들었다. 오류장바구니를 생성하는 API를 테스트 하는 과정에서 계속 error 500 Internal Server Error 가 뜨면서 Failed to encode cart data 라고 떴다.    오류가... 2024-12-07T01:26:24.561+09:00 ERROR 36898 --- [samsung_delivery] [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang..

은행 환전 개인과제 트러블 슈팅_TIL

다양한 연관관계, 예외처리, 트랜잭션, JPQL를 활용하여 은행 환전 시스템을 만든다. 이를 통해 코드의 안정성과 가독성을 향상시키며, 유지보수가 용이한 구조를 설계하는 방법을 익히고,고도화된 요구사항을 효과적으로 관리하고 구현하는 능력을 길러보자! 개발 전, 공통 조건모든 테이블은 고유 식별자(ID)를 가진다.3 Layer Architecture 에 따라 각 Layer의 목적에 맞게 개발CRUD 필수 기능은 모두 데이터베이스 연결 및 JPA를 사용해서 개발생성, 수정일자는 JPA Auditing 을 통해 관리주어진 코드에 필요한 기능이 있다면 필수 기능에 없더라도 개발해서 사용Currency 테이블은 달러에 대한 데이터를 가지고 진행환율 데이터 설정은 현재 기준을 참고 기능 구현 🖥Lv 1. 고객(U..

뉴스피드 프로젝트_트러블 슈팅.TIL

Java와 Spring을 배우고 본격적으로 Spring을 활용하여 협업 프로젝트를 시작했다. (2024.11.19~2024.11.25.)이번 과제는 친구들의 가장 최근에 업데이트 된 게시물을 볼 수 있는 페이지가 담긴 뉴스피드를 만드는 것이다.쉽게 이해하자면 facebook이나 Instagram 같은 SNS 라고 볼 수 있다. 참고 코드build.gradle 에 아래의 의존성을 추가해주세요.implementation 'at.favre.lib:bcrypt:0.10.2'config 패키지가 없다면 추가하고, 아래의 클래스를 추가해주세요.import at.favre.lib.crypto.bcrypt.BCrypt; import org.springframework.stereotype.Component; @Compo..

자바의 정석 CH 5 배열

배열같은 타입의 여러 변수를 하나의 묶음으로 다룸.0 1 2 3 4... 0부터 시작한다.위의 것들 하나하나 index라고 하는 값들. index를 다루기 위해 참조 변수가 필요함. 저장 공간 다루기참조 변수의 이름을 붙여줌. 스코어 0, 스코어 1...저장공간이 아무리 많아도 자동으로 이름이 만들어져서 저장됨 - 변수처럼 일일히 명명하지 않아도 저장된다는 장점.변수는 떨어져있는데 배열은 연속적으로 붙어있다. 배열의 선언과 생성.배열을 선언하면 배열을 다루기 위한 참조 변수가 만들어짐. 생성하면 저장 공간 만들어짐.타입[ ] 변수이름; int[ ] score;[5] 저장 공간 개수 5...    배열의 길이배열은 한 번 생성하면 길이를 바꿀 수 없다... (크기를 늘리려고 할 때 연속되는 저장공간이 비어..

순환 참조란? Circular Dependency (일정 관리 앱 서버 DEVELOP 트러블 슈팅)

지난 일정 관리 앱 서버를 만들었던 부분에 user를 추가하여 develop을 했다.JDBC 형식을 기반으로 하여 만들었던 서버를 JPA를 활용하여 만드는 방식으로 변경된다. 좀 더 보완된 ERD 오류 1시작부터 오류가...처음 BaseEntity에 User와 Schedule 클래스를 만들고 SQL문이 잘 나오는 지 확인하기 위해서 어플리케이션을 실행하였는데, 초장부터 오류가 나서 당황했지만, 천천히 확인해보니 application.properties 에 데이터베이스의 이름을 잘못 입력한 것을 확인하였다.  먼저 생성했던 데이터베이스의 이름과 동일하게 입력 해준다.  다시 실행하니 SQL문이 잘 나오는 것을 확인할 수 있다. 이 밖에도 대부분의 오류가, 대소문자를 구별하지 못하거나 오타가 난 경우가 너무..

일정 관리 앱 서버 만들기_트러블 슈팅.TIL

일정 관리 앱 서버 만들기_트러블 슈팅.TIL -> 과제회고 KPT트러블 슈팅 오류의 주제를 제목으로 변경  Java 언어를 활용하여 Spring Framework를 사용하여 본격적으로 서버 만드는 연습을 시작했다. 과제는 일정 관리 앱 서버를 만드는 것!도전 기능에 있는 부분도 해보고 싶었지만, 필수 기능 구현도 오류가 많이 발생해서 시간상 구현하지 못하였다.다행인 것은 JPA로 넘어가기 전에 JDBC를 먼저 사용해서 단계를 차근차근 밟아가기 때문에 좀 더 연습이 될 것 같다.!!최대한 많이 해보고 익숙해지는 것이 중요!!  개발 전, 공통 조건일정 작성, 수정, 조회 시 반환 받은 일정 정보에 비밀번호는 제외일정 수정, 삭제 시 선택한 일정의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만..

Java 문맥 구성과 데이터 관리 (연산자, 조건문, 반복문, 배열, 컬렉션)

계산 하기_연산자 ➕➖✖️➗계산할 대 계산의 대상이 되는 것이 피연산자이며, 계산의 목적이 되는 것이 연산자이다.연산자 : 덧셈, 뺄셈처럼 계산할 기호 ➕피연산자 : 연산자로 인해 계산되는 숫자 🔢int x = 5;int y = 10;int z = x + y; // 5(피연산자) +(연산자) 10(피연산자) 계산System.out.println(z); // 출력값 : 15 연산자 종류산술 연산자 + -   *   /   %   >  사칙 연산과 비트연산비교 연산자 > =   크고 작음과 같고 다름을 비교논리 연산자 &&   ||   ! 그리고(AND)와 또는(OR) 으로 조건을 연결대입 연산자 =   ++  —- 우변의 값을 좌변에 저장, 연산 복합 대입기타 연산자(type)   ? :    ins..

계산기 필수 기능 구현_트러블 슈팅.TIL

Java에서 클래스를 활용한 계산기와 클래스를 사용하지 않는 계산기를 구현하는 과제를 수행했다. 과제 수행 목적클래스를 활용한 계산기: 이 버전에서는 자바의 객체 지향 원칙을 적용하여 클래스를 정의하고, 연산을 수행하는 메소드를 작성해야 한다. 이 과정에서 클래스와 객체의 개념을 이해하고 활용하는 방법을 익힐 수 있다.클래스를 사용하지 않는 계산기: 이 버전에서는 클래스 없이 자바의 기본 문법만을 사용하여 계산기를 구현한다. 변수와 메소드를 이용하여 연산을 수행하는 과정에서 자바의 절차적 프로그래밍을 경험할 수 있다.핵심 목표는 자바 문법의 실습과 객체 지향 개념의 적용이다.    과제 구현 범위Lv.1 클래스 없이 기본적인 연산을 수행하는 계산기 만들기양의 정수(0 포함)를 입력받고 int 타입으로 선..