Spring
[토비의 스프링 3.1 Vol1] 3장 템플릿 정리
3.1 다시 보는 초난감 DAO 3.1.1 예외처리 기능을 갖춘 DAO JDBC 수정 기능의 예외 처리 코드 JDBC 코드는 어떤 상황에서도 가져온 리소스를 반환할 수 있도록 try/catch/finally 구문 사용을 권장한다. 3.2 변하는 것과 변하지 않는 것 3.2.1 JDBC try/catch/finally 코드의 문제점 테스트를 통해 DAO마다 예외상황에서 리소스를 반납하는지 체크하게 해야 하지만 .. 3.2.2 분리와 재사용을 위한 디자인 패턴 적용 메소드 추출 변하는 부분을 메소드로 빼서 독립시킨다. 이렇게 하면 분리시키고 남은 메소드가 재사용이 필요하고, 분리된 메소드는 DAO 로직마ㅏㄷ 새롭게 만들어서 확장되어야 한다. 템플릿 메소드 패턴의 적용 템플릿 메소드 패턴을 이용하여 분리한다...
[스프링부트와 JPA 활용 2] Section2. API 개발 고급 - 준비
API 개발 고급 소개 조회용 샘플 데이터 입력 지연 로딩과 조회 성능 최적화 컬렉션 조회 최적화 페이징과 한계 돌파 OSIV와 성능 최적화 조회용 샘플 데이터 입력 userA JPA1 BOOK JPA2 BOOK userB SPRING1 BOOK SPRING2 BOOK 두 건의 주문이 접수된 것이다. jpashop/src/main/java/jpabook/jpashop/InitDb.java 추가 package jpabook.jpashop; import jakarta.annotation.PostConstruct; import jakarta.persistence.EntityManager; import jpabook.jpashop.domain.*; import jpabook.jpashop.domain.item...

[스프링부트와 JPA 활용 2] Section1 중 "회원 삭제 API"
JPA 활용2를 듣던 도중, 회원 등록, 조회, 수정 API는 강의에서 다루나 삭제 API를 강의에서 안 다루어 직접 코드를 짜 보았다. MemberApiController.java 에 코드 추가 //회원 삭제 API @DeleteMapping("/api/v3/members/{id}") public ResponseEntity deleteMemberV1(@PathVariable ("id") Long id) { memberService.delete(id); return new ResponseEntity("회원이 성공적으로 삭제되었습니다", HttpStatus.OK); } MemberService.java 에 코드 추가 //회원 삭제 API @Transactional public void delete(Long..
RESTful API 기초 - 의미, 장점, 응답/요청 형식
RESTful API 의미 = REST API 참고 : API 기초 - API 의미, API 종류(WebSokcet, REST, Web), API 유형 — y-seo의 딩코 기록들 (tistory.com) API 기초 - API 의미, API 종류(WebSokcet, REST, Web), API 유형 API 란 ? Application Programming Interface Application Programming을 위한 Interface 주로 클라이언트와 서버가 서로 통신할 수 있게 하는 메커니즘이다. 개발자가 하는 요청과 받고 싶은 응답을 구성하는 방법에 y-seo.tistory.com REST의 균일한 인터페이스를 제공한다. 균일한 리소스 식별자를 사용한다. 클라이언트가 원할 때 리소스를 수정하거..
API 기초 - API 의미, API 종류(WebSokcet, REST, Web), API 유형
API 란 ? Application Programming Interface Application Programming을 위한 Interface 주로 클라이언트와 서버가 서로 통신할 수 있게 하는 메커니즘이다. 개발자가 하는 요청과 받고 싶은 응답을 구성하는 방법에 대한 정보를 포함한다. 쉽게 말하자면 "연결 통로"로 생각할 수 있다. Websocket API JSON 객체를 사용하여 데이터를 전달하는 웹 API 클라이언트와 서버 간의 양방향 통신을 지원한다. REST API Representational State Transfer REST : GET, PUT, POST, DELETE 등의 함수 집합 클라이언토와 서버가 HTTP를 사용하여 데이터를 교환한다. stateless 특징을 가진다. 서버가 클라이..

[스프링부트와 JPA 활용 2] Section1. API 개발 기본
회원 등록 API 단순히 SQL로 API를 끌어오지 않아도 된다. JPA는 Entity가 있기 때문에 API를 설계할 때 주의해야 한다. API를 test 하기 위해 Postman을 설치한다. Download Postman | Get Started for Free Download Postman | Get Started for Free Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com 템플릿 엔진을 사용하여 렌더링 하는 Controller와 API 스타일의 Controll..
DTO, DAO에 대해서
DTO란? Data Transfer Object 데이터 전송 객체 프로세스 간 데이터를 전달하는 객체 비즈니스 로직을 포함하지 않는다. 순수하게 전달하고 싶은 데이터만 포함된다. getter/setter 메소드만 가진다 DB에서 데이터를 받아 Service나 Controller로 보낸다. Entity를 DTO 형태로 변환하여 사용한다. Resopnse와 Request 모두 적용할 수 있다. 일종의 Wrapper라고 볼 수 있다. 가변적이다. DAO란? Data Access Object 실제로 DB에 접근하기 위한 객체 CRUD 기능을 수행한다. Service와 DB 사이의 연결 역할을 한다. 일반적으로 Repository package로 표현한다. 사실 거의 같다고 봐도 된다. Repository는 En..
[토비의 스프링 3.1 Vol1] "2장 테스트" 정리
2.1 UserDaoTest 다시보기 2.1.1 테스트의 유용성 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확인하는 과정 테스트가 성공하면 모든 결함이 제거되었다는 의미 2.1.2 UserDaoTest의 특징 웹을 통한 DAO 테스트 방법의 문제점 웹 화면을 통해 값을 입력하고 기능을 수행하고 결과를 확인하는 방법이 가장 흔하다. 위 방법은 DAO에 대한 테스트로서는 단점이 너무 많다. DAO뿐만 아니라 서비스, 컨트롤러, 뷰 등 모든 레이어 기능을 만들고 나서 테스트가 가능하기 때문이다. 또한 테스트 중 문제가 생기더라도 범위가 광범위하여 원인을 알아내기 힘들다. 작은 단위의 테스트 테스트는 가능한 작은 단위로 쪼개어 집중해서 실행해야 한다. → “관심사의 분리”라는 원리가 여기에도 적용된다..

[스프링부트와 JPA 활용 1] Section7. 웹 계층 개발
홈 화면과 레이아웃 jpashop/src/main/java/jpabook/jpashop/controller/HomeController.java 생성 package jpabook.jpashop.controller; import lombok.extern.slf4j.Slf4j; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.info..