Java/Spring 59

Junit5을 이용한 테스트코드 작성(단위 테스트 코드)

프로젝트나 사람들과 협업을 하게되면 테스트 코드는 필수적이다. 테스트코드를 작성하는 이유는 다음과 같다. 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 나중에 코드를 리팩토링 할 때 기존 기능의 올바르게 수행되는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킨다. 시스템에 대한 실제 문서를 제공해준다. @SpringBootApplication public class BoardApplication { public static void main(String[] args) { SpringApplication.run(BoardApplication.class, args); } } 스프링부트 웹을 실행할 수 있는 이유 @SpringBootApplicaiton은 스프링부트의 자동 설정, 스프링 Bean 읽기..

Java/Spring 2022.08.15

SpringBoot JPA(Java Persistence API) 사용 목적

유지, 보수와 효율성 증대 JPA를 사용하지 않고, SQL문으로 테이블을 생성한다면 일일히 CRUD를 작성해주어야 한다. 하지만, JPA를 사용한다면 일일히 CRUD문을 작성하지 않고 JPA에게 저장할 객체로 전달해주면 된다. 테이블 간에 연관관계를 정의하기 위해 사용 ex) entity가 2개일 때, 작성자 entity ↔ 게시글 entity간의 연관관계를 정의하기 위해서는 1 : 1(OnetoOne,일대일), 1 : n(OnetoMany,일대다), n: 1(ManytoOne,다대일)이 있다. 작성자 한 명은 여러 개의 게시글을 사용할 수 있으므로, 작성자 입장에서는 1 : n(일대다,OnetoMany) 관계지만, 게시글 입장에서는 다대일(ManytoOne)관계이다(여러 개의 게시글들을 한 명이 쓸 수..

Java/Spring 2022.08.05

DTO, DAO, Repository, Entity 개념

Entity(Domain) 데이터베이스에 쓰일 컬럼 및 여러 엔티티 간의 연관관계 데이터베이스의 테이블을 하나의 엔티티로 생각해도 됨 DB 테이블과 1:1 매핑 Repository Entity에 의해 생성된 DB에 접근하는 메소드를 사용하기 위한 인터페이스 Service와 DB를 연결하는 고리의 역할 DB에 적용하고자 하는 CRUD를 정의하는 영역 DAO(Data Access Object) DB에 접근하는 객체를 의미 Service가 DB에 연결할 수 있게 해주는 역할 DB를 사용하여 데이터를 조회하거나 조작 DTO(Data Transfer Object) DTO는 VO(value Object)이며, 계층간 데이터 교환을 위한 객체를 의미 (Read Only 개념을 담고 있음) Spring Boot의 서비..

Java/Spring 2022.08.04

예외처리(Exception)기능 + Response 기능(데이터 반환) 을 추가한 게시판 만들기 코드

Response package com.example.mentoring.Response; import com.fasterxml.jackson.annotation.JsonInclude; import com.sun.net.httpserver.Authenticator; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @JsonInclude(JsonInclude.Include.NON_NULL)// Null 버림 @AllArgsConstructor(access = AccessLevel.PRIVATE) @Getter public class Response { private boolean success; private ..

Java/Spring 2022.07.27

스프링 스터디(RestAPI의 다양한 기능 추가(Exception, Response..)

4주차 Custom Respose 만들기 (기존 포스트맨 결과와 비교) 예외처리 사용 및 필요성 Exception 작성 Advice 생성 및 사용 README.md 파일 만들기 Response을 커스텀해서 사용하는 이유는 ResponseEntity 클래스를 통해 리턴을 해주면 데이터의 형식을 수정할 수가 없게 된다. 즉 형식을 유동적으로 수정해주기 위해 Response를 사용한다. ResponseEntity로 데이터를 반환할 경우 Response로 데이터를 반환할 경우 Response로 데이터를 반환했을 때, ResponseEntity로 데이터를 반환했을 때 보다 더욱 다양한 틀에 감싸져 있음을 확인할 수 있다. 이렇게 사용하는게 더욱 편리한 이유는 프론트엔드 개발자의 편의를 위함과 더불어, 데이터의 형..

Java/Spring 2022.07.25

스프링 스터디(3주차) CRUD 게시판 만들기 + Postman 사용

스프링에서 CRUD 게시판을 만들기 위해 만들어줬던 4가지 1.Entity(개체, DB의 관점에서는 테이블로 바라볼 수 있음) -> 가장 먼저 만듦 기본 어노테이션 @Data @AllArgsConstructor @NoArgsConstructor @Entity =>이것 네 개는 필수적으로 깔고 코드 작성 해야함. 2.BoardRepository=>Repository를 통해 , DB와 스프링 서버를 연동시켜준다. =>코드가 간결하기에 두 번째로 만들어준다. 다른 파일들은 전부 class이지만, BoardRepository는 interface를 통해 상속(extends)받아야 한다. 3. => Controller, Service Controller는 요청을 담당하고, Service는 기능 구현을 담당한다. C..

Java/Spring 2022.07.20

스프링 스터디(2주차) + 내용 정리

2️⃣주차 배운 내용 스프링에서 데이터베이스를 다루는 방법 DB, Domain, Repository, Service, Controller yml 파일 과 properties 파일의 차이점 컴퓨터끼리의 통신 언어(XML, JSON의 구조) GET, POST, PUT, DELETE 요청 MVC 패턴을 이용한 CRUD 게시판 생성 #1 properties 와 yml 파일 구조 및 장단점 #Application.properties Spring-datasource-url = "" Spring-datasource-username = "" Spirng-datasource-password="" #Application.yml server : 8080 Spring Datasource : url: jdbc:mysql://l..

Java/Spring 2022.07.12

스프링부트 기본구조 및 JPA

1️⃣.Domain(Entity) -Mysql 테이블과 매핑되는 클래스이다. -테이블 정보를 가공할 때 필요하다. -JPA 사용시 여러 어노테이션을 사용하며, 테이블, 필드, 필드 옵션 등을 설정한다. 2️⃣.Repository(데이터베이스에서 데이터를 넣고 빼는것을 담당) -repository는 DB와 스프링서버를 연결시켜줄 수 있다. -스프링 서버가 데이터가 필요한 경우 Repository(JPA) 통해 데이터베이스의 데이터를 가져온다. 3️⃣Service(기능 구현 담당) -기능 구현을 하기 위한 클래스 -Repository한테 데이터를 받아온 후, 기능을 구현해서 Controller에게 리턴해준다. -데이터는 Repository(JPA)에 있던 데이터이다. 4️⃣Controller(요청 담당) -..

Java/Spring 2022.07.04

spring boot 프로젝트 생성 및 mysql 스프링부트 연동

1. Type :Gradle JDK : 16 Java : 11 Packaging : Jar로 설정 2. 스프링부트의 종속성 추가(기능 추가) Spring Web Spring Data JPA MySQL Driver Lombok 4가지를 추가해준다. 3. Mysql 스키마 생성 Connection name 입력 및 Password 지정 password는 Store in Vault를 입력해 저장 4. Mysql & Spring boot 연동하기 src - main - resources로 들어가서 application.yml 이라는 새로운 파일을 생성한다. 생성한 후 다음 코드를 복사/붙여넣기 해서 작성해준다. server: port: 8080 spring: datasource: url: jdbc:mysql:/..

Java/Spring 2022.07.04