이전 포스팅
https://turtlejacob.tistory.com/69
jscode - 스프링부트 입문 클래스 (api와 네트워크). 2
이전 포스팅 https://turtlejacob.tistory.com/68 jscode - 스프링부트 입문 클래스 ot. 1 이번 회차에 한 내용은 간단하다. .강사님의 소개와 커리큘럼 소개 .환경세팅 .스프링 프로젝트 만들기 강의를 들어가
turtlejacob.tistory.com
jscode - 스프링부트 입문 클래스 3회차 학습내용 기록( 2023.07.13 )
오늘의 학습목표
- gradle
- curd api
- spring data jpa 튜토리얼
gradle이란
- 빌드 자동화 툴
- bulid.gradle
- 스프링 프로젝트에서 사용하는 라이브러리들의 의존성을 관하는 파일
- 플러그인, 저장소, 의존성을 설정
- settings.gradle
- 프로젝트의 구성 정보 파일
- 멀티 모듈 프로젝트를 관리할 때 사용
- 이외의 설정 파일( 편집할일이 거의 없음)
- gradlew : 리눅스 또는 맥 os용 실행 쉘 스크립트 파일
- gradlew.bat : 윈도우용 실행 배치 스크립트 파일
- gradle-wrapper.jar : jar 형식으로 압축된 wrapper파일, gradlew ,gradlew.bat는 이 jar 파일을 사용하여 gradle task를 실행한다.
- gradle-wrapper.properties : gradle wrapper : 설정 정보 파일, wrapper의 버전 등을 설정할 수 있다.
CURD api 만들기
- 자세한 실습 내용은 과제에서
Spring Data JPA 튜토리얼
- spring data JPA는 자바 클래스와 실제 DB를 연결해주는 기능을 제공한다.
- JPA는 java aplication에서 ORM 표준으로 사용한다.
- ORM이란 우리가 일반적으로 알고있는 class와 DB를 맵핑(연결)한다는 의미이며
- 기술적으로는 aplication의 object를 자동으로 영속화 해주는 것이다
- 영속화 : 프로젝트가 종료해도 영구적으로 존재하도록 하는 것
- JPA, spring Data JPA는 다른 것이다.
- JPA는 일종의 인터페이스로 위에서 설명한 기능들을 위한 자바의 interface 같은 것이다
- jpa의 구현체는 Hibernate이다.
- 허나 Hibernate 말고도 여러 구현체가 있다 하지만 가장 성숙한 라이브러리이기에 주로 사용하는 것이다
- Spring Data JPA는 일종의 모듈이다.
- 사용자가 좀더 쉽게 JPA의 구현체들을 다루는 모듈을 제공한다
- Repository라는 인터페이스가 대표적인 모듈이다.
- 이미지로 추상화 하면 다음과 같다.
- JPA는 일종의 인터페이스로 위에서 설명한 기능들을 위한 자바의 interface 같은 것이다
후기
crud api를 만들어보는 실습과, spring data jpa 대한 실습을 진행 했다. 둘다 내가 전혀 무지한 부분이라 흥미로웠고 curd api 실습은 원론적인 내용이 우선되지 않고 실습위주로 진행되서 좋았던거 같다. 또한 jpa에 대한 내용을 배움으로 프로젝트와 db연결할 때 어떤식으로 접근하고 공부해야하는지에 대한 인사이트를 얻을 수 있었다.
과제
(블로글 글을 뒤늦게 작성하기 때문에 기존에 작성했던 메소드를 수업을 해나가면서 자꾸 변경해서 남아있는 메소드만 기록함)
이후의 과제물에서는 service, controller 분리하여서 관련 메소드들을 같이 기록함
1. [POST] localhost:8080/api/products 로 body에 새로운 상품 정보를 json으로 담아서 요청하면, 가지고 있는 상품 정보 리스트에 새로운 상품을 추가해야 합니다.
2.[GET] localhost:8080/api/products 로 요청하면, 가지고 있는 전체 상품 정보 리스트 데이터를 반환해야 합니다.
3.[GET] localhost:8080/api/products?id=1 로 요청하면, 가지고 있는 전체 상품 정보 리스트에서 인덱스 1번에 해당하는 상품을 반환해야 합니다.
@PostMapping("api/products")
public String saveProducts(@RequestBody ProductEntity productEntity) throws Exception {
return productService.saveProducts(productEntity);
}
// public String saveProducts(ProductEntity productEntity) throws Exception {
// if(productRepository.existsById(productEntity.id)){
// throw new Exception("상품등록에 실패했습니다.");
// }
// productRepository.save(productEntity);
// return "성공";
//
// }
@GetMapping("api/products")
public List<ProductEntity> getProducts(){
return productService.getProducts();
}
// public List<ProductEntity> getProducts(){
// return productRepository.findAll();
// }
@GetMapping(value = "api/products", params = "id")
public ProductEntity getProductId(@RequestParam(value = "id", required = true) Long id) throws Exception {
return productService.getProductId(id);
}
// public ProductEntity getProductId(Long id) throws Exception {
// Optional<ProductEntity> index= productRepository.findById(id);
//
// index.orElseThrow(() -> new Exception("찾을 수 없는 상품입니다."));
//
// return index.get();
// }
다음 포스팅
https://turtlejacob.tistory.com/71
jscode - 스프링부트 입문 클래스 (Spring data JPA). 4
이전 포스팅 https://turtlejacob.tistory.com/70 jscode - 스프링부트 입문 클래스 (CURD APi). 3 이전 포스팅 https://turtlejacob.tistory.com/69 jscode - 스프링부트 입문 클래스 (api와 네트워크). 2 이전 포스팅 https://turt
turtlejacob.tistory.com
'Development studies > spring' 카테고리의 다른 글
jscode - 스프링부트 입문 클래스 (Spring Data JPA 활용과 예외처리). 5 (0) | 2023.08.16 |
---|---|
jscode - 스프링부트 입문 클래스 (Spring data JPA). 4 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (api와 네트워크). 2 (0) | 2023.08.09 |
jscode - 스프링부트 입문 클래스 (ot). 1 (0) | 2023.08.09 |
jscode - 스프링부트 (Spring Boot) 입문 클래스를 들어가며 . 0 (0) | 2023.08.09 |