Spring Boot를 이용한 RESTful Web Services 개발 게시물 관리를 위한 Post Entity 추가와 초기 데이터 생성 사용자가 작성할 수 있는 게시물 관련 Entity를 만들어보자. 사용자는 여러 개의 게시글을 작성할 수 있으며, 아예 작성을 하지 않을 수도 있다. 반대로 게시글은 사용자가 없으면 생성되지 못한다. 즉 User가 필수 데이터, Post가 옵셔널 데이터라고 생각하면 된다. Post.java 생성 ... public class Post { @Id @GeneratedValue private Integer id; private String description; @ManyToOne(fetch = FetchType.LAZY) @JsonIgnore private Users us..
Spring Boot를 이용한 RESTful Web Services 개발 Spring Data JPA를 이용한 Entity 설정과 초기 데이터 생성 application.yml jpa 로그를 볼 수 있도록 설정을 해주자. 난 설정되어있었다. spring: jpa: show-sql: true User.java @Entity public class User { @Id @GeneratedValue private Integer id; ... } @Entity : 이 어노테이션을 붙여주면 해당 클래스의 이름으로 클래스 필드에 있는 정보들을 기반으로 데이터베이스 테이블을 생성한다. @Id : 레코드를 구분하기 위한 기본키 설정. 여기선 id가 기본키가 된다. @GeneratedValue : 자동 생성되는 키 값이란..
Spring Boot를 이용한 RESTful Web Services 개발 Java Persistence API 개요 JPA Java Persistence API의 약자 자바 ORM 기술에 대한 API 표준 명세 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스이기 때문에 클래스 내부에는 메서드 선언 밖에 없고 기능을 사용하려면 구현체를 만들어야한다. EntityManager를 통해 CRUD 처리 Spring Data JPA Spring Module JPA를 추상화한 Responsitory 인터페이스 제공 JPA 사용을 위한 Dependecy 추가와 설정 JPA 라이브러리 추가 build.gradle 스프링 프로젝트를 생성했을 때 dependecies에서 JPA와 h2를 추가했다면 buil..
Spring Boot를 이용한 RESTful Web Services 개발 Level3 단계의 REST API 구현을 위한 HATEOAS 적용 HATEOAS란? Hypermedia As the Engine Of Application State의 약자 현재 리소스와 연관된(호출 가능한) 자원 상태 정보를 제공 Level 0 REST API라고는 볼 수 없고 단순히 웹이나 특정한 네트워크를 통해서 컴퓨터 자원을 의미없이 전달해주는 단계 HTTP를 사용하지만 웹의 매커니즘을 사용하진 않음 모든 요청을 단일 엔드 포인트에 보낸다. Level 1 요청이 개별 리소스와 통신 약속 리소스(ex: uri)를 확보하고 해당 리소스에 응답함 Level 2 리소스와 HTTP 요청 메서드를 사용함 일반적인 프로젝트에서 구현하는..
Spring Boot를 이용한 RESTful Web Services 개발 유효성 체크를 위한 Validation API 사용 Validation API에는 두 가지 API가 존재한다. JDK에 포함된 Validation API Hibernate Validation API Hibernate는 자바에서 어플리케이션을 개발할 때 사용하는 API 자바의 객체와 데이터베이스의 엔티티를 매핑해주는 프레임워크 제공 이번 포스팅에서는 JDK에 포함된 Validation API만 사용해보자. Hibernate Validation API는 추후에 사용.. JDK에 포함된 Validation API 스프링부트 2.3 버전 이상 시에는 gradle에 validation을 따로 추가해줘야한다. build.gradle imple..
Spring Boot를 이용한 RESTful Web Services 개발 HTTP Status Code 제어 GET Method와 POST Method OK 응답 코드 구분하기 UserController.java 수정 @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user) { User savedUser = service.save(user); URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}") .buildAndExpand(savedUser.getId()) // {id}에 값 지정 .toUri(); // uri 형태로 변환 retur..
Spring Boot를 이용한 RESTful Web Services 개발 User Service API 구현 User 도메인 클래스 생성 User.java 생성 (com.example.restfulwebservice) @Data @AllArgsConstructor public class User { private Integer id; private String name; //private Date joinDate; Date 클래스 미사용 private LocalDateTime joinDate; } 강의에선 joinDate의 타입을 Date로 지정하였지만 나는 LocalDateTime으로 지정했다. UserDaoService.java 생성 Dao는 DB와 관련된 코드, Service는 비즈니스 로직을 작성..
Spring Boot로 개발하는 RESTful Service Spring Boot 개요 Spring Boot 스프링 기반의 단독 실행 가능한 어플리케이션을 개발하기 위한 플랫폼 상용화 가능한 수준의 어플리케이션을 만들 수 있음 spring 보다 spring boot를 사용하면 최소한의 설정만으로 플랫폼과 서드 파티 라이브러리 등을 사용할 수 있음 spring boot에 Tomcat, Jett나 Undertow 웹 어플리케이션 서버가 내장되어 있어 별도로 설치하지 않아도 된다. 실행에 필요한 많은 API들이 spring boot에 'starter'라는 컴포넌트를 통해 쉽게 사용할 수 있음. 실행에 필요한 다양한 설정을 auto configuration으로 자동으로 설정할 수 있다. 상용화와 관련된 통계, ..
Spring Boot를 이용한 RESTful Web Services 개발 WEB Service 개발 방법 SOAP과 REST의 이해 Web Service & Web Application Web Service World Weid Web(WWW)를 통해 이기종 간의 통신 서비스를 제공한다. 네트워크를 통해 특정한 서버의 포트를 열어 놓고, 클라이언트의 요청을 받은 HTML, JSON, XML, images 등과 같은 웹 문서를 제공한다. 웹 서비스는 WWW, Internet, HTTP의 기술을 사용하는 웹을 통해 특정한 도메인의 문제를 해결하기 위한 Web Application을 뜻하기도 한다. 즉, 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기 위한 소프트웨어 시스템이다. Web Servic..