분류 전체보기 76

[트러블 슈팅] JPA 심화 개인과제

1. @DynamicInsert 사용1)개요DynamicInsert를 통해 DB의 기본값을 적용하려고 했지만, ItemEntity 테스트 코드를 작성 했을 때 nullable = false의 조건을 확인하는 과정에서 테스트 코드가 정상적으로 동작하지 않는 문제 발생 2)문제상황기본 값 설정을 @PrePersist를 사용해 처리하는 방식으로 수정을 했는데, 테스트 환경에서 DB에 직접적인 기본값 적용 확인이 어려워 DynamicInsert와 중복으로 인하여 여전히 동작하지 않는 문제 발생 DynamicInsert는 SQL INSERT 문을 생성할 때 null 필드를 제외시켜 DB의 기본값을 적용하지만, 코드에서 설정된 값과 충돌하거나 테스트에서 null 처리가 누락이 되면 동작하지 않는 문제 발생 3)해결..

[TIL] 배달 앱 아웃소싱 프로젝트

프로젝트 명 : 오늘은 뭐먹지?(What The Eat)소개한 줄 정리 : 오늘은 뭐먹지? 매일 선택의 순간에 놓인 당신을 위한 한 끼 추천 서비스진행 날짜 : 2024.12.03 ~ 2024.12.09 프로젝트 요약1. 프로젝트 목적Spring Boot + JPA를 활용한 도메인 설계 및 연관관계 매핑Soft Delete 기법을 통한 데이터 관리 방식 이해예외 처리 및 공통 응답 적용을 통한 안정적인 API 설계Enum을 활용한 상태 관리와 비즈니스 로직 캡슐화팀 내 코드 리뷰 및 리팩토링을 통한 유지보수 향상2. 프로젝트 구현회원 관리 : 회원가입, 로그인, 회원 탈퇴가게 관리 : 사장님이 가게 등록, 수정, 조회, 폐업 가능메뉴 관리 : 사장님이 메뉴 추가, 수정, 삭제주문 관리 : 고객이 주문 생..

[트러블 슈팅] 아웃소싱 프로젝트

1. 코드 구현 전 원활하고 구체적인 의사소통 필요1) 개요프로젝트 진행이 아직 미숙하여 초기에 팀원 간의 충분한 의사소통이 이루어지지 않아 프로젝트 진행 중에 기본 구조 및 코딩 규칙 등이 통일 되지 않았다. 이로 인해 코드 merge 후 여러 문제점 발생 2) 문제 상황기본 구조와 의존성 정의 X문제팀원이 각각 다른 방식으로 프로젝트의 기본 구조를 설계BaseEntity를 포함한 예외 처리 방식, 의존성 추가 등에 대한 사전 합의가 부족결과중복된 의존성이 추가됨 (ex. spring-boot-starter-validation 중복 추가)예외 처리가 전역 예외처리와 Service 계층에서 각각 처리되어 일관성 부족 및 혼란용어 정의 및 타입 불일치문제가게 주인과 관련된 용어를 각각 다르게 정의(Owne..

[TIL] HTTP 상태 코드 설계

1. 주제 선택팀원들과 프로젝트 S.A 설계를 완료한 후, 설계가 적합한지 확인하기 위해 튜터님께 피드백을 받았다. 이 과정에서 API 설계의 응답(response) 부분을 성공과 실패로 나눠 상태코드로 표현한 부분에 대해 긍정적인 평가를 받았고, 동시에 에러 상태를 조금 더 구체화하면 좋겠다는 제안과 함께 HTTP 상태코드 설계와 RESTful 여부에 대한 논의가 이루어졌다.피드백 후, 프로젝트 마감 기한이 짧아 팀원들과 깊이 논의할 시간이 충분하지 않아 혼자 고민해보고 정리하고자 이 주제를 선택하게 되었다. 2. 고민한 내용왜 RESTful한 상태 코드를 사용해야 하는가?RESTful하지 않은 설계는 어떤 상황에서 사용하는가?상태코드를 설계할 때 클라이언트를 고려한 방식은 어떤 것인가?만약 RESTf..

[프로그래머스/ 코딩테스트 연습문제] 크기가 작은 부분 문자열

Q. 크기가 작은 부분 문자열A.class Solution { public int solution(String t, String p) { int answer = 0; //p의 길이와 같은 부분 문자열을 찾아야하니까 p의 문자열 길이를 pLength로 선언 int pLength = p.length(); //문자열이 아닌 숫자로 비교하여 p가 크거나 같은 경우 횟수+1 long pValue = Long.parseLong(p); //t문자열에서 p와 같은 길이를 찾는거니까 t의 총 길이 - p의 길이까지 부분 문자열 탐색 for(int i=0; i

[TIL] 고객과 통화 연관관계로 환전요청 만들기

진행 날짜 : 2024.11.26 ~ 2024.11.29 프로젝트 요약 1. 프로젝트 목적RESTful API 설계 : Spring Boot와 JPA를 사용하여 CRUD API를 설계하고 구현데이터 검증 : Validation을 활용하여 입력값 검증 및 데이터 무결성 보장비즈니스 로직 분리 : 계층별 역할 분리를 통해 유지보수성 향상예외처리 : GlobalExceptionHandler를 통해 예외 처리 방식 학습JPQL 활용 : 데이터 조회 및 요약을 위한 JPQL 사용법 학습2. 프로젝트 구현 단계Lv0 : 프로젝트 설계API 명세서 작성 : postman 사용ERD 작성 SQL 작성Lv1 : 고객(User)과 통화(Currency) 복잡한 연관관계환전 요청 중간 테이블 생성필드 : 고객 고유 식별자,..

[트러블 슈팅] Spring 심화 개인과제

- 어떤 현상을 발견했는가?1. @RequestParam으로 Enum 값 처리 postman 오류 2. @NotNull과 Bean Validation이 작동하지 않음 3. @PostMapping 어노테이션 사용 불가 오류 4. Project JDK is not defined 이런 장애가 생길 수 있다는 것을 인지1. @RequestParam으로 Enum 값 처리 postman 오류-@RequestParam이 enum 타입 값을 처리하지 못하거나 올바르게 매핑되지 않으면 400 Bad Request 오류가 발생한다는 것을 인지-클라이언트가 enum 문자열 값을 정확히 전달하지 않거나, 서버가 enum을 변환하지 못할 시에 발생 2. @NotNull과 Bean Validation이 작동하지 않음-Dto에서 ..

[TIL] 뉴스피드 프로젝트

프로젝트 명 : 자주 취하지 않고 자취합니다.소개한 줄 정리 : 자취생들을 위한 꿀팁 모음집내용 : 자취생들의 생활에서 여러가지 꿀팁들을 공유하는 사이트진행 날짜 : 2024.11.19 ~ 2024.11.25 프로젝트 요약1. 프로젝트 목적협업 도구(Git & Github)를 사용하여 컨벤션 준수의 중요성 체득RESTful API 설계 및 JPA 기반 CRUD 구현Spring Boot와 JPA를 활용한 데이터 검증 및 인증/인가 로직 구현Cookie/Session을 활용한 인증 및 사용자 데이터 유효성 검증유지보수성이 높은 코드를 위한 비즈니스 로직 분리 및 예외처리2. 프로젝트 구현프로필 관리 : 사용자 프로필 CRUD, 비밀번호 변경, 본인확인 로직뉴스피드 게시물 관리 : 게시물 CRUD, 조회 시 ..

[프로그래머스/ 코딩테스트 연습문제] 이상한 문자 만들기

Q. 이상한 문자 만들기A1class Solution { public String solution(String s) { StringBuilder answer = new StringBuilder(); int start = 0; //문자열을 처음부터 끝까지 for문 반복으로 확인 for(int i=0; i 대문자 if((j-start) % 2 == 0){ answer.append(Character.toUpperCase(c)); //단어 내 홀수 인덱스 일 경우 -> 소문자 }else { ..