전체 글 375

48.02_[Spring MVC] Spring Data JDBC_Pagination API_22.10.31

>페이지네이션 : 저장된 데이터를 모두 요청하는 것이 아닌 단위별로 나누어 요청하는 것 : 페이지를 한 단위로 한다. >페이지네이션 요청 -?page=1&size=10 : 원하는 page 와 한 page에 몇 개의 데이터를 볼 것인지에 대한 정보 size 를 쿼리로 요청한다. : 해당 쿼리문은 모든 정보를 10개로 나눈 후 1번 page를 요청하는 것이다. >구현 과정 1. Controller 수정 -getMembers 핸들러 메서드 : List와 pageInfo를 응답 메세지로 하는 Dto를 반환한다. : 쿼리 파라미터를 매개변수로 삼는다. : Spring 에서 제공하는 pagination 관련 Api를 사용하여 쿼리 파라미터를 받아 pageInfo, service 로 정보를 넘긴다. 2. Entity..

48.01_[Spring MVC] Spring Data JDBC_정리_22.10.31

초기 설정 및 기본 사용법 1. 의존 라이브러리 추가 -Spring Boot Starter Data JDBC -H2 (In-memory DB) 2. H2 사용 설정 -application.yml 파일 설정 -동작 유무 확인; 애플리케이션 실행 로그 -동작 유무 확인; H2 DB 접속 3. 패키지 구조 설정 및 클래스 생성 -Controller : 서비스 연동, mapper 사용 -Dto : getter, setter, id 필드 필요 유무 파악, Validation -Entity : getter, setter, id 필드 필요 유무 파악 -Mapper : @Mapper 및 spring 설정, 추상 메서드 생성 -Service : controller 대응 메서드 설정 4. 클래스 수정 및 추가 -Entit..

[JAVA] Enum

Enum >Construct : Enum의 생성자는 private이다. 그 이유는 Enum의 특성과 관련이 있다. (private 생략해도 IDE는 private이 있다고 인식한다) : Enum은 런타임이 아닌 컴파일 타임에 모든 값을 알 수 있어야 하기 때문이다. : Enum의 생성자가 있는 이유는 Enum은 사실 클래스이기 때문이고, 생성자를 활용하는 방안은 내부 필드를 외부에서 인스턴스 생성 방식으로 사용하는 것이다. (새로운 enum 값을 생성하기 위함이 아님) >예시 //Enum 내부 구조 enum Cake{ CAKE_CHEESE(500), CAKE_STRAWBERRY(300), CAKE_MILK(400); private int kcal; (private) Cake(int kcal){ this...

Memo/짧은 메모 2022.10.30

47.03_[Spring MVC] Spring Data JDBC_서비스 및 레포지토리 구현_22.10.28

>Repository : DDD 용어 중 하나로, 데이터 액세스 계층에서 데이터베이스와 상호작용하는 역할을 하는 인터페이스를 의미한다. : 각각의 데이터 액세스 계층은 각각의 레포지토리를 사용한다. : 특정 데이터를 받는 데이터 액세스 계층이 데이터베이스에 CRUD 작업을 하기 위해 사용하는 인터페이스이며, CRUD 작업을 위해 CrudRespository를 상속받는다. : 해당 인터페이스 내부에는 기능을 수행하기 위한 쿼리문이 존재한다. 이 후 Repository 인터페이스를 선언했다면 Service 클래스를 수정하며 repository 인터페이스를 적용할 것이다. 그런데 이 때 (1)repository를 구현하지 않고 repository의 메서드를 사용하게 되고, (2)심지어 repository 에 ..

47.02_[Spring MVC] Spring Data JDBC_도메인 엔티티 클래스 정의_22.10.28

>클래스 간 관계 설정 : 데이터베이스 테이블 간 관계는 PK와 FK의 지정으로 서로의 관계를 설정할 수 있음. : 클래스는 객체 내 변수(필드)를 선언하며 해당 변수가 다른 클래스를 참조하는 변수로 선언함으로써 관계를 설정한다. : 주의할 것은 PK와 FK 로 관계를 연결할 때에는 1:N 관계에서 N의 입장이 1의 입장의 PK 를 FK로 갖지만, 객체의 참조 관계에서는 1:N관계에서 1의 입장이 N의 입장의 객체를 List, Set과 같은 자료구조(컬렉션)으로 참조하는 필드를 갖는다. : 하지만 이 또한 어그리거트 루트 간 관계에서는 반대된다. 즉, 어그리거트 루트 간 참조는 DB table과 같다. >Aggregate 객체 매핑하기 -규칙 1. 모든 엔티티 객체의 상태는 애그리거트 루트를 통해서만 변..

47.01_[Spring MVC] Spring Data JDBC_JDBC 기반 설계(DDD)_22.10.28

Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계 >데이터베이스의 테이블과 도메인 엔티티 클래스의 설계 : Spring Data JDBC를 사용하기 위해 가장 먼저 할 일 >DDD(Domain Driven Design) : 도메인 주도 설계 : 도메인이란, 각 분야 혹은 비즈니스적인 업무 영역같은 개념으로 알고 있으면 된다. 예를 들면, 나는 대학에서 ~~전공을 이수했으니 ~~도메인을 갖고 있는 사람이다. : 만들고자하는 애플리케이션이 사용되는 도메인에 대한 지식, 즉 도메인 지식이 뛰어나다면 퀄리티가 높은 애플리케이션을 만들 수 있다. : 도메인 주도 설계(DDD)는 애플리케이션의 전체적인 도메인과 내부 기능들 각각의 도메인도 고려하며 설계하는 구현 기법이다. (내부 기능을 구현하는 ..