최신 글
📁 Spring
기본 개념Spring Web MVC 패턴Spring Web MVC는 Model-View-Controller(MVC) 패턴을 기반으로 한다.Model: 애플리케이션의 데이터와 비즈니스 로직 담당View: 사용자 인터페이스 담당. (JSP, Thymeleaf 등의 템플릿 엔진)Controller: 사용자 요청을 처리, 모델-뷰 연결 -> Dispatcher Servlet이 컨트롤러 호출Dispatcher Servlet이 때 Dispatcher Servlet은 Spring Web MVC 프레임워크의 핵심 구성 요소로서, 클라이언트의 모든 요청을 받아 적절한 컨트롤러(핸들러)를 찾아 전달하는 역할을 한다.이렇게 컨트롤러 구현을 단순화할 수 있으며, 비즈니스 로직에 집중하고  HTTP 요청 및 응답 처리 등에 대..
📁 Spring
ORM이란?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어(OOP 언어, Java/C#등)와 관계형 데이터베이스 간의 데이터 변환을 자동으로 처리하는 기술ORM을 사용하면 SQL 쿼리 대신 직관적인 코드로 데이터를 조작할 수 있다.ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 객체 모델과 관계형 데이터베이스 간의 불일치를 해결하고, 이를 통해 개발자는 데이터베이스를 간접적으로 조작할 수 있다.ORM의 장/단점장점생산성 향상: SQL 쿼리 작성을 자동화해 개발 시간을 단축시킬 수 있다.유지보수성 향상: 객체 지향적인 코드로 데이터베이스를 관리하므로 유지보수가 용이하다.데이터베이스 독립성: 데이터베이스 종류에 상관없이 동일한 코드로 작동객체 지향적 접근:..
📁 Spring
QueryDSL?QueryDSL은 데이터베이스 쿼리를 생성하기 위한 자바 라이브러리로, JPQL(Java Persistence Query Language)을 보다 유연하게 사용할 수 있도록 도와준다.주로 JPA(Java Persistence API)와 함께 사용되며, 런타임 시점에 유효성 검사가 가능하며, IDE의 자동완성 기능을 지원하여 쿼리 작성 시 오타 등을 방지하는 등의 장점이 있다.기능 및 장점타입 안정성(Type Safety)Java 코드로 쿼리 작성 -> 컴파일 시점에서 타입 안정성 제공오타나 잘못된 속성명을 사용할 경우 컴파일 오류로 잡아낼 수 있어 개발 단계에 도움을 줄 수 있다.Entity 클래스와 QueryDSL의 연동엔티티 클래스를 기반으로 쿼리 작성 가능-> 데이터베이스 테이블과 ..
📁 Spring Boot
지난 정렬/페이징에 이어서 이번엔 검색 기능을 구현해 보기로 했다. [SpringBoot/JPA] Spring Data JPA 페이징 구현하기쇼핑몰은 홈에서 상품 리스트를 보여준다. 새 상품별, 인기순 등 조건에 따라 리스트를 보여주려고 생각하니 페이징을 해야겠다는 생각을 하게 됐다. Spring Data JPA는 데이터베이스에서 데이터를chaeyami.tistory.com하다보니 필터링 기준도 많아지고, 카테고리 별 필터링이나 정렬/검색은 특정 상황에서만 적용되면 안 된다. 모든 결과에서 정렬/필터링이 적용되어야 하는 것. 그래서 이는 QueryDSL 을 사용해 구현하기로 했다.굳이 JPA로 조건별 상품 가져와 놓고 또 새로운 라이브러리를 쓰는 이유는... 더보기더보기결론부터 말하자면 상당히 비효율적이..
인기 글
📂 Python
1. 웹스크래핑(Web Scraping)이란? 우리는 웹 페이지에서 많은 정보를 얻는다. 이 정보들을 추출, 정리할 필요성을 느낄 때가 있는데, 이를 스크래핑이라고 한다. 즉, 웹 페이지의 정보를 가져오고(크롤링;Crawling), 데이터들을 추출(스크래핑;Scraping)해 DB에 저장하고 사용하는 것을 이야기한다. 2. Python으로 웹 크롤링하기 2-1. 준비하기 기본적으로 웹 크롤링은 HTML로 작성된 문서를 긁어서 가져오는 일이기 때문에, 파이썬에서 그 정보를 가져오도록 요청해야 한다. 따라서 Requests 라이브러리로 요청하고, BeautifulSoup 라이브러리로 필요한 정보만 추출할 것이다. requests 라이브러리 설치 나는 venv 가상환경을 사용하기 때문에 간단하게 VSCode ..
📂 Tools
General - 일반적인 단축키 Window Mac 설명 Alt + #[0-9] ⌘0...⌘9 각 단축키에 해당하는 도구창 열기 Ctrl + S ⌘S 모두 저장 Ctrl + Alt + Y ⌘⌥Y IntelliJ가 파일 시스템에서 최신 변경 사항을 처리하도록 강제 일반적으로 변경 내용은 자동으로 처리되므로 작업은 아무 작업도 수행하지 않음 Ctrl + Shift + F12 ⌘⇧F12 편집기(Editor) 영역을 최대로 크기로 토글 Alt + Shift + I ⌥⇧I 현재 프로필 기준으로 현재 파일 검사 Ctrl + ` ⌃` 인텔리제이 테마 변경 Ctrl + Alt + S ⌘ , 설정창(Settings) 열기 Ctrl + Alt + Shift + S ⌘ ; 프로젝트 구조창(프로젝트 구조 확인 및 변경) 열..
📂 Spring Boot
쇼핑몰 페이지는 기본적으로 로그인 여부와 상관 없이 이용 가능하지만, 특정 기능에는 로그인한 사용자의 정보가 필요하다. 문의 기능은 로그인 여부에 따라 정보 요청이 달라지고(비로그인시 이름,이메일을 입력), 문의 답변과 리뷰 작성은 로그인한 사용자만 가능하게 했다. 클라이언트에서 이를 가져오는 것은 보안에 취약하므로 내부에서 현재 로그인한 사용자 정보를 사용하는 것이 안전하다고 판단했다. 로그인 중인 사용자의 정보를 가져오는 방법에는 두 가지가 있다. SecurityContextHolder 클래스를 이용하는 방법, 그리고 우리는 로그인에 jwt를 사용하고 있으므로, 클라이언트에서 요청을 보낼 때 Header에서 보내는 accesstoken을 사용할 수 있다. Spring Security - 인증과 인가 ..
📂 Spring Boot
결제 api인 아임포트(iamport)가 포트원으로 이름을 바꿨다! 아무튼 나는 이걸 사용해서 결제를 구현했다.결제 기능을 구현하기 전에, 당연히 장바구니/주문 기능부터 구현해야 한다. 주문 -> 결제가 이루어지기까지 전체 과정을 먼저 설계했다. 엔티티 엔티티 설계 아래는 우리 프로젝트 전" data-og-host="chaeyami.tistory.com" data-og-source-url="https://chaeyami.tistory.com/252" data-og-url="https://chaeyami.tistory.com/252" data-og-image="https://scrap.kakaocdn.net/dn/bIIzI7/hyVSZiOV2D/xi2bv8TYM2nf3lWWBDkcjk/img.png?wid..
📂 Spring Boot
관리자 페이지에서 판매할 상품을 등록한다. 엔티티와 함께 등록 로직도 다 구현했으니 이제 사진을 업로드 해야 한다. 우선 구조를 생각해보자. 사진은 서버에 저장되어야 하며, 경로를 DB에 저장해야 한다. -> MultipartFile 사용 : Spring의 파일 업로드 인터페이스 한 상품 객체에 여러 사진 경로가 저장될 수 있어야 한다. -> 상품 엔티티에 사진 경로 리스트 필드 리스트 필드는 OneToMany로 구현해야 한다. -> 썸네일 엔티티가 별개로 필요하다. 정리하면 이미지 업로드는 사진을 저장할 엔티티(테이블)을 만든다. MultipartFile 인터페이스로 구현한다. 상품과 썸네일은 일대다 (1:N) 관계 엔티티 설정 ProductThumbnail 엔티티 생성 사진을 저장할 엔티티를 생성한다..
📂 Node.js
Node.js 삭제하기 제어판 > 프로그램 > 프로그램 제거 (또는 Win+R > appwiz.cpl) 설치된 Node.js 버전을 찾아 선택하고 제거 NVM 삭제하기 파일 탐색기에서 C:\Users\\AppData\Roaming\nvm 폴더를 찾아 삭제 Win+R > cmd > control sysdm.cpl,,3 입력 > 환경변수 > NVM_HOME 및 NVM_SYMLINK 변수를 삭제 관련 폴더 삭제하기 C:\Program Files\nodejs 폴더 삭제 C:\Users\\AppData\Roaming\npm 폴더 삭제 Win+R > regedit > HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 경로에서 nvm 관련 항목을 찾아 삭제
ChaeYami
채야미의 코드레시피🍳