[요구 사항] - 사용자가 책을 반납할 수 있다. [API 스펙] - HTTP Method : PUT - HTTP Path : /book/return - HTTP Body(JSON) : { "userName" : String, "bookName" : String } - 결과 반환 X, HTTP Code 200이면 OK - 대출(/book/loan)과 반납(/book/return)을 위한 HTTP Body(DTO)가 완전히 동일하다. - 이때 반납을 위한 DTO를 새로 만드는게 좋을까? or 재활용하는게 좋을까? cf) 대출을 위한 DTO(BookLoanRequest)는 이전 글에서 이미 만들어져 있는 상태 - 이 경우 강사는 (개인적으로) 새로 만드는 것을 선호한다. - why? 나중에 대출과 반납 중 ..
[요구사항] - 사용자가 책을 빌릴 수 있다. - 다른 사람이 빌린 책은 또 다른 사람이 빌릴 수 없다. [API 스펙] - HTTP Method : POST - HTTP Path : /book/loan - HTTP Body(JSON) : { "userName" : String, "bookName" : String } - 결과 반환 X, HTTP Code 200이면 OK 1. Book Table - 사용자의 대출 기록을 저장하는 새로운 테이블이 필요하다. CREATE TABLE USER_LOAN_HISTORY ( ID BIGINT AUTO_INCREMENT, // 대출 기록 id USER_ID BIGINT, // 책을 빌린 유저 id BOOK_NAME VARCHAR(255), // 빌린 책 이름 IS_R..
- 다음 글 부터는 먼저 코드를 작성한 다음에 강의를 들어보자 ● 도서관에 책을 등록하는 기능 [API 스펙] - HTTP Method : POST - HTTP Path : /book - HTTP Body(JSON) : {"name" : String // 책 이름} → name은 필수 - 결과 반환 X, HTTP Code 200이면 OK - 이러한 구조로 만들어야 한다. 1. Book Table CREATE TABLE BOOK ( ID BIGINT AUTO_INCREMENT, NAME VARCHAR(255) NOT NULL, PRIMARY KEY(ID) ); - VARCHAR(255)라고 설정한 이유 1. JPA를 사용할 때 @Column Annotation의 length 속성의 기본값이 255이다. →..
- Service 계층의 주요 역할 중 하나가 트랜잭션을 관리하는 것이다. @Transactional - Spring에서 트랜잭션을 적용하는 방법 - 메소드에 @Transactional Annotation이 붙으면 메소드가 시작될 때 트랜잭션을 시작(start transaction)해주고 메소드가 종료되면 Exception 발생 여부에 따라 commit 혹은 rollback을 적용한다. cf1) - SELECT 쿼리만 사용한다면 readOnly 옵션을 쓸 수 있다. - readOnly 옵션이 붙으면 저장, 수정, 삭제와 같은 데이터 변경을 일으키는 기능을 수행하지 않는다.(약간의 성능 향상과 혹시 모를 데이터 변경 방지) cf2) - IOException과 같은 Checked Exception은 roll..
1. 삭제 1. name을 기준으로 User가 있는지 확인 2. User가 있다면 DELETE 쿼리를 날린다. // JpaRepository를 상속하는 것만으로도 UserRepository는 Spring bean으로 등록된다. public interface UserRepository extends JpaRepository { // name을 기준으로 조회 // 데이터가 있으면 User 객체 반환, 없으면 null 반환 User findByName(String name); } public void deleteUser(String name) { // findByName 같은 기본 내장 함수는 없다. 따라서 이런 함수를 직접 만들어줘야 한다. // 어디에? UserRepository interface User..
- 예전에 배우긴 했는데 오랜만에 다시 한 번 복습하는 느낌으로 강의를 들었다. 트랜잭션 : 쪼갤 수 없는 업무의 최소 단위 ex) 쇼핑몰 사이트에서 고객이 상품을 주문하면 아래와 같은 일련의 과정이 필요하다. 1. 주문 기록 저장 2. 포인트 저장 3. 결제 기록 저장 - 만약 위의 3가지 과정을 진행하는 도중 error가 발생하면 어떻게 될까? ex) 주문 기록과 포인트 저장까지는 잘 됐는데 결제 기록을 저장하는 도중 오류가 발생 - 고객 입장에서는 주문도 됐고 포인트까지 저장됐는데 정작 결제 기록을 찾을 수 없는 황당한 상황이 발생한다. - 이러한 문제를 어떻게 해결할 수 있을까? - 업무(비즈니스 로직)와 관련된 모든 SQL을 성공시키거나 → 모두 다 성공하거나 - 그 중 하나라도 실패하면 모두 ..
- Total
- Today
- Yesterday
- OS
- Phaser
- spring
- 코테
- 빅데이터
- 코딩테스트
- git
- 알고리즘
- SpringBoot
- MySQL
- Advanced Stream
- MongoDB
- Stream
- java
- 프로세스
- Java8
- 자료구조
- 빅데이터 분석기사
- Spring Boot
- jpa
- SQL
- 메모리
- DART
- Phaser3
- 운영체제
- node.js
- API
- nosql
- 프로그래머스
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |