일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 프레임워크
- toUpperCase
- 서브쿼리
- Model1
- @Controller
- 서블릿
- 인텔리제이
- 코딩테스트
- STS
- 인프런
- JSP
- 기술 대비
- SQL
- DDL
- @RestController
- 프로그래머스
- select
- 메이븐
- Model2
- 자바
- 롬복
- AOP
- MVC2
- 뉴렉처
- 스프링
- Lombok
- MVC
- Join
- 김영한
- 코테
- Today
- Total
목록개발(0) (38)
Heestory

1. 설문 조사 서비스 기술 스택DB: H2 Database (개발/테스트용, 추후 실DB로 교체 용이)ORM: JPA(Hibernate)API 명세/테스트: Swagger(OpenAPI)인프라/확장성: 추후 클라우드/운영환경으로 전환 가능하게 구조화주요 특징익명 응답: 로그인 없이 누구나 참여(브라우저별 UUID 활용)설문 그룹화, 버전 관리: 비즈니스적으로 의미 있는 설문 분류, 변경 이력 관리중복 응답 제한: 1회만 응답 가능문항/옵션 자유 설계: 다양한 질문 유형/옵션 지원대용량 트래픽/운영 실전 고려확장 가능한 API 구조: Swagger로 문서화/테스트, 협업에 용이2. 기능별 상세 요구사항2.1 설문 생성/수정/버전 관리설문 생성설문 그룹(시리즈) 내에 새로운 설문을 생성필수값: title,..

개인 프로젝트에 롬복을 쓰는데 습관처럼 쓰는데, 회사 직원이 물어보면서 다시 공부하게 된 롬복여기서 다시 정리해봅니다 📋 Lombok 어노테이션 종류/역할 어노테이션역할/설명실무 사용 예@Getter모든 필드의 getter 자동 생성거의 필수. DTO, Entity 모두에서 널리 사용@Setter모든 필드의 setter 자동 생성Entity, DTO에서 불변성 지키고 싶으면 지양@NoArgsConstructor파라미터 없는 기본 생성자 자동 생성JPA Entity 필수 (보통 access=PROTECTED)@AllArgsConstructor모든 필드를 파라미터로 받는 생성자 자동 생성빌더와 같이 쓰기 필수! (access=PRIVATE 추천)@RequiredArgsConstructorfinal/@Non..

Spring Boot 프로젝트를 JAR 파일로 배포할 때 application.yml 설정이 어떻게 적용되는지 헷갈릴 수 있다. 이번에 개발망 JAR를 실행시키려 했는데 실행이 되지 않았고 JAR 내부에 application.yml이 포함되어 있는 경우, 또는 외부 설정 파일을 사용할 경우 Spring Boot는 특정 우선순위에 따라 설정을 로드한다는 걸 몰랐었다. 이번 글에서는 Spring Boot의 설정 파일 적용 원리와 우선순위를 정리해보았다. 1. Spring Boot에서 설정 파일 적용 원리Spring Boot는 application.yml 또는 application.properties 파일을 이용해 애플리케이션 설정을 관리한다. JAR 배포 시, Spring Boot는 설정 파일을 다음과 같은..

1. 문제 상황업무 중 유지보수 과정에서 API 응답 속도가 현저하게 느려지는 현상을 발견했다. 평소에는 빠르게 응답하던 API가 갑자기 1건당 2~3초까지 걸리기 시작했다.처음에는 API 서버 문제일 가능성을 생각했지만, 다음과 같은 의문이 들었다:6개월 주기로 DB 백업을 하고 있었는데, 백업 주기가 다가와서 발생한 문제일까?DB에 로그가 너무 많이 쌓여서 성능이 저하된 걸까?특정 테이블에서 데이터를 너무 많이 조회하는 쿼리가 있을까?이러한 가능성을 고려하여 실시간 로그를 확인하며 원인을 분석했다. 2. 원인 분석✅ 실시간 로그 분석API의 응답 속도를 측정하면서 실시간 로그를 분석한 결과, API 요청이 들어오고 2~3초 뒤에야 응답을 받는 것을 확인했다.다행히도 SFTP를 통해 상대방 서버의 로..

✅ 1. 페이징 처리란?페이징 처리는 대량의 데이터를 일정한 크기로 나누어 필요한 부분만 조회하는 방식입니다. 이는 데이터베이스의 성능을 최적화하고, 사용자에게 빠른 응답 속도를 제공합니다.Page: 전체 페이지 정보Pageable: 페이지 요청 정보 (페이지 번호, 크기, 정렬 기준 등)Slice: 다음 페이지 유무만 확인 가능 (더 가벼움) 🚀 2. 기본적인 JPA 페이징 처리📌 Repository 설정public interface ReviewRepository extends JpaRepository { Page findByProductId(Long productId, Pageable pageable);} findByProductId 메서드는 Pageable을 파라미터로 받아 페이징 처리된 ..

JPA를 공부하면서 순환참조에 대해 제대로 이해가 되지 않았고, 나에게도 이런 문제가 생길까? 했는데 토이 프로젝트 과정 중 떡하니 바로 생긴 순환 참조 ㅎㅎ 이번 글에서는 ProductController에서 발생한 중복 데이터 반환 문제의 원인과 그 해결 방법을 알아본다. ✅ 1️⃣ 문제 원인 분석 📌 (0) 순환 참조 문제란?양방향 관계에서 JSON 직렬화 시 무한 루프 발생@Entitypublic class Product { @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List reviews;}@Entitypublic class Review { @ManyToOne @JoinColumn(name = ..

주니어지만, 세팅이 정말 반은 아닐까 하는..이번 토이 프로젝트에서는 AWS와 Vue를 사용하며, 새노트북으로 이용하기 때문에 vue.js의 경우 새로 세팅해야한다. AWS의 경우는 버튼만 잘 누르면 30분 뚝딱이고(하지만 나는 3시간..이유 하단)vue.js의 경우는 버벅거리지 않는다면 30분(하지만 나는 2시간..)바로바로 따라해보자 가입 후 오른쪽 콘솔에 로그인 손쉬운 생성시 , 보안, IP 게이트워이, DB 식별 따로 처리해야할 게 많다.내가 그렇게 3시간을 ... 표준 생성 + 사용 DB 선택 이후 자체 관리와 함께 사용 식별, 이름 선택하면 됨그리고 나서 DB 툴과 연결 여부 확인 & yml에서 확인하면 된다. Vue.js의 경우는 npm 이런 명령어를 많이 쓰는데 이건 node.js 명..

웹 개발 중 사용자에게 파일을 다운로드하도록 제공해야 하는 경우가 많습니다. 제가 이번 프로젝트에서 똑같은 파일 다운로드였으나 어떤 곳에선 되고, 어떤 곳에선 안되는 문제가 발생했었고, 1차적으로 POST방식을 썼기 때문에 다운로드가 부분적으로만 가능했었습니다. 이번 글에서는 POST 방식과 location.href를 이용한 파일 다운로드 방식의 차이점을 설명하고, 파일 다운로드를 구현하는 Java 컨트롤러 코드를 분석해 보겠습니다. 1. POST 방식 vs. GET 방식(location.href)POST 방식의 파일 다운로드POST 방식으로 파일 다운로드를 구현하려면, 서버에서 파일을 처리하고 응답으로 파일 데이터를 전송해야 합니다. 일반적으로 POST 방식은 데이터를 서버로 전달하는데 사용되며, 파..

지난 포스팅에 이어 웹 애플리케이션 개발에서 **세션(Session)**과 **쿠키(Cookie)**는 사용자 상태를 관리하는 데 중요한 역할을 합니다. 이번 포스팅에서는 세션과 쿠키의 차이점, 각각의 사용 사례, 그리고 Java Spring Framework를 활용한 대표적인 예제를 통해 개념을 명확히 정리해보겠습니다. 세션(Session)과 쿠키(Cookie)의 차이점특징세션 (Session)쿠키 (Cookie)저장 위치서버에서 관리클라이언트(브라우저)에 저장보안상대적으로 안전 (데이터가 서버에 저장됨)보안에 취약 (클라이언트에서 접근 가능)데이터 크기제한 없음 (서버 메모리나 데이터베이스 의존)4KB 제한유지 시간기본적으로 브라우저 종료 시 만료 (설정에 따라 유지 가능)만료 시간을 설정하여 브라..

문제 상황개발 환경에서 localhost를 기반으로 두 개의 프로젝트를 실행하고 있었습니다:Frontend 프로젝트: localhost:8081Admin 프로젝트: localhost:8080이 두 프로젝트에서 POST 방식으로 데이터를 전송할 때마다 사용자가 강제로 로그아웃되는 현상이 반복되었습니다.문제 원인브라우저는 기본적으로 쿠키를 도메인 + 포트 단위로 관리합니다.localhost는 브라우저에서 특별한 호스트로 처리되며, 같은 localhost에서 포트가 다른 경우에도 쿠키가 공유되지 않습니다.때문에 POST 요청을 보낼 때마다 세션이 초기화되었습니다. 문제 해결 방법이 문제를 해결하기 위해 아래 두 가지 접근 방식을 사용할 수 있습니다방법 1: 도메인 분리를 통한 세션 충돌 해결방법 설명두 프로..