Spring Boot 36

[Spring] @PathVariable과 @RequestParam 차이점

회사 코드를 리뷰하던 중 @PathVariable과 @RequestParam을 하나의 메서드에서 함께 쓰길래 차이점이 궁금해서 찾아봤다😵‍💫 @PathVariable과 @RequestParam 모두 URI를 통해 전달된 값을 파라미터로 받아오기 위해 사용한다는 것은 알고 있었지만, 어떤 차이가 있는지는 잘 몰랐다.   ✔️ @RequestParam과 @PathVariable의 차이우선 두 어노테이션 모두 http의 비연결성을 극복하고 데이터를 전달하기 위한 방법 중 하나로, URI를 통해 전달된 값을 파라미터로 받아오는 역할을 한다.URI를 통해 값을 전달하는 방식http://localhost8080/home?page=1&size=10http://localhost8080/home1쿼리스트링을 사용하여..

Spring Boot/STUDY 2024.09.26

[Spring] Maven과 Gradle 개념 및 비교

회사 소스파일을 내려받고 이클립스에서 적용시키려고 하니 Maven으로 빌드를 해야 했다.나는 항상 Gradle로만 프로젝트를 빌드해서 진행했기 때문에 각각의 개념과 차이점을 정리해보려고 한다!    ✔️ 빌드(Build)빌드는 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 말한다.우리가 작성한 소스코드(ex. java파일), 프로젝트에서 쓰인 각각의 파일 및 자원(.xml, .jpa, .jpg, properties)을 jvm이나 톰캣 같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물을 일컫는다.Java 프로젝트를 진행하면 개발자가 작성한 A.java와 여러 가지 정적 파일 등에 해당하는 resource가 존재한다.빌드를 한다면 소스코드를 컴파일해서 .class..

Spring Boot/STUDY 2024.08.29

[Spring] Mapper와 Repository의 차이

프로젝트 소스코드를 내려받은 후, 폴더 구조를 살펴봤는데 Mapper, Repository 둘 다 있는 것을 확인했다.예전 Spring Boot 프로젝트를 진행할 때는 mapper만 사용해서 했기 때문에 mapper와 Repository의 차이가 무엇인지 궁금해서 찾아봤다! MapperMapper는 데이터베이스와 애플리케이션 간의 상호작용을 처리하는 객체주로 SQL 쿼리를 사용하여 데이터베이스에서 데이터를 가져오거나 데이터를 데이터 베이스에 저장하는 데 사용 ⭐ 객체와 데이터베이스 간의 매핑을 처리하는 역할로써 객체와 데이터베이스 테이블 사이의 변환을 담당하여 객체와 테이블 간의 속성 매핑을 수행하는 것  RepositoryRepository는 데이터 엑세스 계층에서 데이터를 관리하고 엔티티에 접근하는 ..

Spring Boot/STUDY 2024.08.08

[Spring Boot] 타임리프(Thymeleaf)란?

📌 타임리프(Thymeleaf)란?타임리프는 자바 라이브러리이며, 텍스트, HTML, XML, JavaScript, CSS를 생성할 수 있는 템플릿 엔진이다.템플릿 엔진이란 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구이다. 템플릿 엔진은 HTML과 함께 템플릿 엔진을 위한 문법을 섞어 사용해야 한다.스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 대체할 수 있다.Spring Boot에서는 JSP가 아닌 Thymeleaf 사용을 권장하고 있다. 개발 프로젝트를 진행할 때, JSP를 사용할지 타임리프를 사용할지에 대한 고민이 있었다.JSP는 무엇인지 알아보자. 📌 JSP란?JavaServer Pages의 약자를 ..

Spring Boot/STUDY 2024.07.17

[파이널 프로젝트] 영화 예매 트래픽 구현 고민

📌 대량의 사용자들이 동시에 예매 서비스를 통해 접속 시도?동시에 접속을 시도하는 사용자가 많을 경우: 대기번호 부여대기번호를 부여하지 않을 경우 발생할 수 있는 문제점💥유저를 한번에 받게 되면 수용 불가능한 트래픽이 들어오게 되고, 서버가 죽게 되어 접근 자체가 안되는 문제 발생수용 불가능한 트래픽 인입으로 요청된 예매 서비스 외의 서비스까지 부하를 줄 수 있다.이렇게 되면, 서버를 늘려야 하는데, 시간과 자원이 필요함 여러 사이트를 참고해본 결과,1. 낙관적 락2. 비관적 락3. Redis 분산 락3가지가 있었다.  그중 현재 프로젝트에 제일 적합하다고 생각한 비관적 락을 사용해서 예매 서비스 기능을 구현해볼 예정이다. 본인이 동시성 제어를 구현하는 가장 큰 이유는, 데이터의 무결성을 보장하고자 ..

Spring Boot/PJT 2024.07.16

[파이널 프로젝트] GitHub The requested URL returned error: 403 Push 에러 해결 방법

팀 프로젝트를 진행하면서 Organization Team을 만들어서 레파지토리를 만들었다.팀원들 각자 코드를 진행 후, Git Bash에서 Push를 하는데 글쎄,,. remote: Permission to pknu-java-gcv/gcv-frontend-pjt.git denied to 사용자이름.fatal: unable to access 'https://github.com/pknu-java-gcv/gcv-frontend-pjt.git/': The requested URL returned error: 403 이런 오류가 뜬 것이다..!!! 에러 메세지를 검색해보니 Team을 만들 때 권한을 읽기로만 줘서 발생한 문제였다 😅 그래서  조직 > 설정 > 엑세스 > 멤버 권한 클릭 후Base permissi..

Spring Boot/PJT 2024.07.12

[파이널 프로젝트] 영화예매 사이트 - ERD 설계

항상 프로젝트를 진행할 때 혼자 DB 설계를 맡아왔었다.이번에는 팀원들이 함께 참여해보고 싶다해서 각자 파트에 대한 DB를 짜오기로 했다.😄 팀원들이 짜 온 DB를 회의시간에 다같이 노션에 정리해보았다.맡은 기능별로 컬럼을 구성함 이렇게 모인 테이블들을 ERD CLOUD를 이용해서 엔티티를 생성하고, 관계도를 그려주기로 했다.  PK는 NO로 주었고, 필요에 따라 외래키를 지정해주었다.이후, 식별/비식별 관계를 구분해주었다. 🔽 실제 고민의 흔적들....🤣보드에 그림을 그려가며 했는데 바로 ERD Cloud에 적용시키는 것보다 처음부터 모두 그려보니 팀원들도 이해가 빨리 됐던 것 같다😁 💬 어려웠던 점아무래도 엔티티 간의 관계 설정이 어려웠다.엔티티 간 대표적인 관계로는 1:1, 1:M, M:N..

Spring Boot/PJT 2024.07.11

[파이널 프로젝트] 영화예매 사이트 - 기능명세서, 유저플로우차트 작성

💨 들어가기 전에..이전에도 몇번의 프로젝트를 진행해봤지만, 정리해놓은 문서가 없어서 열심히 했음에도 불구하고, 포트폴리오를 작성하려고 하니 기억이 나질 않았다😭 그래서 이번 프로젝트는 블로그에 정리해 볼 생각이다!  파이널 프로젝트로 뭘 할까 고민을 하다가 최종적으로 결정난 영화 에매 사이트 제작을 진행하기로 했다 😀 디자이너 2명과 같이 개발 교육을 듣고 있는 교육생 5명해서 총 7명이서 함께 제작할 예정이다. 협업 툴은 Notion으로 진행되며 현재 페이지별 레퍼런스 조사한 파일을 디자이너분에게 전달한 상황이다.07/08(월)까지 기능 구현이 빨리 되어야 할 페이지를 주신다고 하셨으니 그때까지 기능명세서와 플로우차트&다이어그램을 작성하기로 했다. 크게 사용자 멤버, 관리자 멤버, 영화 조회, ..

Spring Boot/PJT 2024.07.06

[Spring Boot] React연동 프로젝트(4) - 상세 화면

🔽 이전 글 [Spring Boot] React연동 프로젝트(2) - 페이징 기능 구현🔽이전 글 [Spring Boot] React연동 프로젝트프로젝트 실행하기 위해 Spring Boot 웹서버, React 프론트 웹 서버도 함께 실행시킨다.  1. 리액트 프로젝트 생성- /spring03/frontboard 폴더 생성cd spring03npx creiieunji023.tistory.com  (Backend) RestBoardController.java detail() 메서드 생성/controller/BoardController.java에서 detail() GET 메서드 복사한 후 수정@GetMapping("/detail/{bno}") public BoardDto detail(@PathVariabl..

Spring Boot/STUDY 2024.07.04