[Spring]/Spring 정리 11

Builder 패턴과 @Builder 어노테이션

프로젝트를 진행하면서 Builder 패턴의 유용함을 더욱 체감 중이다.예를 들어 다음과 같은 클래스 Person이 있다고 하자.public class Person { private String name; private int age; private String address; private String phoneNumber; private String email; private String job;}  Builder 패턴을 사용하지 않았을 경우 필요에 따라 다음과 같이 수많은 생성자들이 있어야 한다.public Person(String name, int age) { this.name = name; this.age = age;}public Person(String..

트랜잭션과 @Transactional

Transaction이란 Spring은 @Transactional 어노테이션을 이용해 선언적 트랜잭션 처리를 할 수 있도록 지원한다. 그렇다면 먼저, 트랜잭션이란 뭘까? 트랜잭션이란, DB의 상태를 변화시키기 위해 진행하는 작업의 단위를 말한다. CRUD의 C U D에 해당하는 SQL 질의어(INSERT, DELETE, UPDATE)를 통해 DB에 접근하는 것을 말한다. 이 때, [SQL 질의어 하나 == 직업의 단위] 가 아니다. 예시 : 송금 A의 계좌에서 B의 계좌로 100만원을 송금한다고 가정하자. 그리고 프로세스는 다음과 같다고 하자. 출금 : A의 계좌에서 100만원이 차감된다. (UPDATE) 입금 : B의 계좌에 100만원을 추가한다. (UPDATE) 그런데 그 짧은 순간 네트워크에 문제가..

Spring 과 Spring Boot 의 차이

Python을 이용한 Django, Ruby를 이용한 Ruby on Rails, Javascript를 이용한 Node.js가 있듯이 Spring은 Java를 기반으로 하는 웹 어플리케이션 제작이 가능한 프레임워크이다. IoC(제어의 역전)와 DI(의존성 주입), AOP(관점지향 프로그래밍) 등의 장점을 갖고 있다. 그럼 Spring Boot는 뭘까? Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". "스프링부트로 [단순 실행]만 하면 되는 스프링 기반의 어플리케이션을 쉽게 만들 수 있다." 이와 관련해 다음의 이미지들이 정말 잘 와닿았다. 즉 Sp..

API - 3 (PUT, DELETE)

PUT 수정을 요청하는 PUT API 를 만들어 보자. CarController.java 에 다음 코드를 추가하면 된다. @PutMapping("/api/cars/{id}") //변경할 데이터 ID 까지 public void updateCar(@PathVariable Long id, @RequestBody CarRequestDto carRequestDto){ carService.update(id, carRequestDto); } 이전의 @GetMapping, @PostMapping 과 URL 이 조금 다르다는 것을 알 수 있는데, 해당하는 ID 값을 가진 데이터를 찾아서 수정해야 하기 때문에 {id} 를 추가해줬다는 차이가 있다. 이는 PUT 방식으로 위 주소로 이동했을 때 작동하는 updateCar 메..

REST / REST API / RESTful 간단히 정리

REST 지금까지는 간단하게 REST 란 서버의 응답이 JSON 형식일 때, 혹은 주소에 명사를, 요청방식에 동사를 사용해 의도를 명확하게 하는 것 이라 정의했다. 조금 더 정확하게 설명하자면 REST(Representational State Transfer) 란 웹에 존재하는 모든 자원에 고유한 URI 을 부여하여 활용하는 것을 의미한다. 자원을 구분하여 해당 자원의 상태/정보를 주고 받는 모든 것을 의미한다. 라고 할 수 있다. 여기서 말하는 자원에는 이미지, 동영상, DB 등이 있다. - HTTP URI 을 통해 자원 명시. - HTTP Method(POST, GET, PUT, DELETE) 를 통해 해당 자원에 대한 CRUD operation 적용 Resource (자원) 자원은 Server 에 ..

API - 2 (GET, POST)

참조 - API란 무엇인가요? AWS : https://aws.amazon.com/ko/what-is/api/ API란 무엇인가요? - API 초보자를 위한 가이드 - AWS aws.amazon.com API 는 간단하게 클라이언트와 서버간의 약속이라고 설명할 수 있다. 클라이언트가 서버에게 요청을 보내면, 서버가 요구사항을 처리한 후 응답하는 것이다. REST(Representational State Transfer) 는 클라이언트가 서버 데이터에 액세스 할 때 사용 가능한 GET, POST, PUT, DELETE 등의 함수 집합을 정의한다. 간단히 정리하자면 REST 란 주소에 명사를, 요청 방식에 동사를 사용해 의도를 명확히 드러내는 것을 의미한다. 동사는 JPA 에서 배웠던 CRUD 를 생각하면 ..

DTO

DTO에 대해 설명하기 전에 MVC패턴을 이해할 필요가 있다. MVC 패턴은 애플리케이션을 Model, Controller, View 세 가지로 구분하는 디자인 패턴이다. Model : DB와 관련된 일을 한다. View : 데이터를 받아서 표현하거나 사용자 요청을 받는다. Contoller : Model에서 데이터를 받아 View로 전달해주거나 View에서 들어온 요청을 해석해 Model을 변경한다. 비즈니스 처리로직(Model)과 UI(View)의 중간에서 Controller가 이들을 연결해주는 역할을 한다. 서로 분리함으로써 각자 역할에만 집중하게 하는 것이다. 이런 경우 유지보수, 확장, 유연성, 중복해결 등 다양한 측면에서 유리해진다. DTO(Data Transfer Object) 란 이러한 계..

JPA - 2 /CRUD로 행복회로 돌려보기(실습)

CRUD Create, Read, Update, Delete 생성, 조회, 변경, 삭제의 기능을 말한다. JPA 로 CRUD기능을 하는 방법을 익혀보려 한다. public interface CarRepository extends JpaRepository { } CarRepository 에서 이미 JPA 에서 만들어놓은 메소드들을 이용하기로 했다는 것을 기억할 것이다. 위의 CRUD들 중 생성, 조회, 삭제는 main이 있는 Application 파일에 작성하여 사용하면 된다. 다만 변경의 경우는 Service 라는 부분에서 작성해야 할 것이 있다. Spring을 세 부분으로 나눠보면 다음과 같다. Controller (Presentation) 이전에 RestController를 통해 잠시 언급한 적이 있..

JPA - 1

데이터베이스를 간단하게 설명하면 매우 고도화된 엑셀이라고 할 수 있다. 엑셀 파일 하나 = 데이터베이스 엑셀 시트 하나 = 테이블 엑셀 행 하나 = 데이터 테이블 생성, 데이터 삽입, 데이터 조회 등을 하고자 한다면 아래 더보기처럼 SQL문을 이용하면 된다. 더보기 만약 자동차 테이블을 만들고자 한다면, CREATE TABLE IF NOT EXISTS Car ( id bigint NOT NULL AUTO_INCREMENT, model varchar(255) NOT NULL, brand varchar(255) NOT NULL, PRIMARY KEY (id) ); 여기에 행 2개를 삽입한다면 INSERT INTO car (model, brand) VALUES ('i8', 'BMW'), ('R8', 'Audi..

RestController (브라우저에 클래스 정보 보여주기)

2022.09.16 - [공부/Spring (Sparta) -] - API, JS 데이터를 서버에서 전달받는 형식이 JSON이라는것을 알 수 있었다. 이 때 JSON형태로 데이터를 반환하기 위해 RestController를 사용한다. REST란 서버의 응답이 JSON형식임을 나타낸다. = HTML, CSS, JS등을 주고받을 때는 REST를 붙이지 않는다. Controller란 클라이언트의 요청을 전달받는 코드를 말한다. 이 중 JSON만을 돌려주는 것을 RestController라고 하는 것 '~' 그럼 RestController를 만들어보자. 이 때 '@'로 시작하는 것들은 Spring 에서 자주 사용하는 Annotation이라는 것으로, 자바 소스코드에 추가하여 사용할 수 있는 메타데이터의 일종이다..