전체 글 55

DAO, DTO, Entity, Domain

1. Value Object (VO)정의: VO는 값 자체를 표현하는 객체로, 불변성을 갖습니다. VO는 주로 데이터의 특정 조합을 표현하며, 데이터가 같다면 동일한 것으로 간주됩니다.특징: VO는 일반적으로 변경이 불가능하고, 동일성이 아니라 동등성에 의해 비교됩니다. 예를 들어, 두 주소 VO가 같은 주소를 표현한다면, 서로 다른 객체일지라도 동등하다고 판단됩니다.ex)public final class Address { private final String street; private final String city; private final String zipCode; public Address(String street, String city, String zipCode) { ..

Java 2024.04.27

[Java] DTO 쉽게 만드는 법 (record)

record자바에서 record는 자바 14부터 프리뷰 기능으로 도입되었고, 자바 16에서 정식 기능으로 확정되었습니다. 주요특징불변성: record의 모든 필드는 기본적으로 final입니다. 따라서 객체가 생성된 후에는 필드의 값을 변경할 수 없습니다.자동 생성된 메서드: record는 자동으로 equals(), hashCode(), toString() 메서드를 생성합니다. 이는 객체의 동등성을 검사하고, 객체를 문자열로 표현하는 등의 작업을 쉽게 처리할 수 있게 해 줍니다.간결한 구문: 필드 정의, 생성자, getter 메서드 등을 명시적으로 작성할 필요 없이, record 선언만으로 자동으로 처리됩니다.데이터 중심: 주로 데이터를 저장하고 접근하는 데 사용됩니다. 각 필드에 대한 자동 생성된 get..

Java/Spring 2024.04.27

[Docker] MySQL 설치

1.MySQL Docker 이미지 다운로드(생략가능)sudo docker pull mysql 2. MySQL 컨테이너 실행 docker run 명령을 사용할 때 Docker는 자동으로 필요한 이미지가 로컬 시스템에 존재하지 않는 경우 Docker Hub나 설정된 다른 레지스트리에서 해당 이미지를 검색하고 다운로드합니다. 따라서, 이미지를 미리 docker pull 명령을 통해 수동으로 다운로드하지 않아도, docker run 명령을 실행하는 순간 필요한 이미지를 자동으로 가져오고 컨테이너를 시작합니다sudo docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=mypassword -e MYSQL_DATABASE=mydatabase -p 3306:3306 -d mysql..

Docker 2024.04.27

[Docker] WSL2사용해서 Docker 설치

WSL에서 Docker 컨테이너 시작 | Microsoft Learn WSL에서 Docker 컨테이너 시작Linux용 Windows 하위 시스템에서 Docker 컨테이너를 설정하는 방법을 알아봅니다.learn.microsoft.com1. WSL2 설치하기(Ubuntu)WSL 개발 환경 설정 | Microsoft Learn WSL 개발 환경 설정이 단계별 가이드의 모범 사례를 사용하여 WSL 개발 환경을 설정합니다. Ubuntu, Visual Studio Code 또는 Visual Studio, Git, Windows 자격 증명 관리자, MongoDB, MySQL, Docker 원격 컨테이너 등을 실행하는 방법을learn.microsoft.com PowerShell(또는 Windows 명령 프롬프트)을 열..

Docker 2024.04.27

[React] useState, prevState활용

State 컴포넌트의 상태를 관리하는 데이터. 사용자의 상호작용이나 시간의 흐름에 따라 변경될 수 있는 데이터를 포함. State의 변경은 보통 이벤트 핸들러나 다른 입력을 통해 발생하며, 변경이 발생하면 컴포넌트가 자동으로 다시 렌더링됩니다. 컴포넌트 내부에서 관리: State는 컴포넌트 내부에서 선언되고 변경됩니다. 컴포넌트의 private 데이터로서 외부에서 직접 접근할 수 없습니다. 동적 UI: State를 사용하여 동적인 사용자 인터페이스를 만들 수 있습니다. setState 함수: 클래스 컴포넌트에서는 setState 메서드를 사용해 state를 업데이트하고, 함수 컴포넌트에서는 useState 훅을 사용합니다. prevState React의 상태 업데이트는 비동기적으로 처리될 수 있으며, 특..

Javascript/React 2024.04.15

[Spring]Jpa를 이용하여 검색기능 사용하기(pageable 사용)

Pageable 인터페이스는 Spring Data JPA에서 페이징과 정렬 정보를 전달하는 표준 방식을 제공합니다. 이를 통해 클라이언트 요청에 기반한 동적 페이징과 정렬 처리가 가능하며, 리포지토리 메소드에 Pageable 객체를 파라미터로 넘겨주면, Spring Data JPA가 이 정보를 바탕으로 SQL 쿼리를 자동으로 생성해줍니다. Pageable 객체에 담긴 페이징과 정렬 조건에 맞게 결과를 Page 형태로 반환합니다. 여기서 Page는 검색된 게시글의 페이지 정보를 포함하고 있어, 개발자는 이를 활용하여 프론트엔드에 필요한 페이징 정보(예: 현재 페이지 번호, 총 페이지 수, 페이지 당 게시글 수 등)를 쉽게 제공할 수 있습니다. 1. 리포지토리 인터페이스 정의 public ..

Java/Spring 2024.04.08

[Spring]@PageableDefault (페이징 처리)

Spring Boot에서 @PageableDefault 애노테이션은 Spring Data의 페이징 처리 기능에서 기본 페이지 크기, 정렬 등을 설정할 때 사용됩니다. 이 애노테이션은 컨트롤러 메소드의 파라미터로 Pageable 객체를 받을 때, 이 Pageable 객체의 기본 값을 지정하는 데 사용됩니다. 예를 들어, 사용자가 페이지 번호나 크기를 명시하지 않았을 경우 기본적으로 사용될 값들을 설정할 수 있습니다. Spring Data의 Pageable 인터페이스를 사용할 때, 컨트롤러 메서드의 파라미터로 Pageable 객체를 직접 받음으로써, Spring MVC가 HTTP 요청의 쿼리 파라미터(page, size, sort 등)에서 페이지네이션과 관련된 정보를 자동으로 추출하고, 해당 정보를 바탕으로..

Java/Spring 2024.04.08

[Spring] @DeleteMapping 사용방법

@DeleteMapping HTML 폼은 기본적으로 'GET'과 'POST' 메소드만 직접 지원합니다. 그렇기 때문에, 'DELETE' 메소드를 사용하기 위해서는 몇 가지 우회 방법을 사용해야 합니다. Thymeleaf와 Spring을 사용할 때, _method 오버라이드를 사용하여 DELETE 요청을 시뮬레이션할 수 있습니다. 이 방법은 HTML 폼에서 POST 메소드를 사용하지만, 요청이 컨트롤러에 도달할 때 DELETE로 해석되도록 합니다. @Controller public class ItemController { @DeleteMapping("/item/{id}") public String deleteItem(@PathVariable("id") Long id) { itemService.delete(..

Java/Spring 2024.04.02