반응형 IT/Java394 JPA N+1 이란? ORM과 JPA에 대한 개념은 아래 참고 포스팅에 추가가 되어있으니 확인 바란다. 이 개념은 JPA를 사용하면서 콘솔 창에 보면 나오는 쿼리를 통해서 확인할수 있다. 예를들어 책과 도서관이라는 각각의 Entity 가 있다. 책에는 id과 name 과 library라는 변수들이 있고 library에는 @ManyToOne 이 걸려있다. 이럴경우 책 정보를 뽑을때 bookRepository.findBy1Id(id) 를 하면 결과를 가져올때 참조되는 library정보를 가져오게 된다. 먼저 sql에서 데이터를 가져오는걸 fetch라고 하는데 fetch에는 2가지 타입이 있다. 데이터가져오는것을 포함해서 데이터베이스의 실행단계가 궁금하면 아래 포스팅을 참고하도록 한다. eager 와 lazy이다. eager는 참.. 2022. 2. 11. SpringBoot/JPA part.10 이번 포스팅은 CRUD 에서 마지막 delete에 관한 포스팅이다. 방법은 앞에서 Read를 할때와 비슷하다. id를 받아와서 그 id에 대한 값을 삭제할것이다. 시작은 controller 이고 delete 메서드를 사용할것이다. 다음과 같이 delete 관련 메서드를 작성한다. controller 메서드 추가 @DeleteMapping("delete") public void deleteBook(@RequestParam Long bookId) { Optional bookValue = bookRepository.findById(bookId); bookValue.ifPresent(selectUser->{ bookRepository.delete(selectUser); }); } param으로 id를 받아오고 .. 2022. 2. 8. SpringBoot/JPA part.9 이번 포스팅은 CRUD 중에서 U update 순서다. 똑같이 controller에서 시작을 할것이다. update는 put메서드를 사용하게 된다. 방법은 id를 가지고 book 객체를 가져온 후에 바꿀 값을 함께 보내주며 그 값으로 대체를 하고 다시 저장해주는 방식으로 진행할 것이다. 먼저 controller에 put메서드를 추가한다. controller에 메서드 추가 @PutMapping("update") public String updateBook(@RequestParam Long bookId,@RequestBody Book book) { Optional bookValue = bookRepository.findById(bookId); bookValue.ifPresent(selectUser->{ se.. 2022. 2. 7. SpringBoot/JPA part.8 이번 포스팅에서는 CRUD중에 Read에 대해서 실습을 해볼것이다. 한가지의 id값을 get 메서드를 보낼 것이고 그 id의 레코드를 가져와서 콘솔에 출력하는 것 까지 진행을 해보도록 하겠다. 시작은 controller에서 부터 시작이 되므로 create처럼 똑같이 controller에서 시작을 할것이다. controller에 아래와 같이 메서드를 추가 하였다. controller 추가 @GetMapping("read") public String findBook(@RequestParam Long bookId) { Optional book = bookRepository.findById(bookId); System.out.println(book); return null; } 메서드는 Get메서드를 사용하였고.. 2022. 2. 6. SpringBoot/JPA part.7 저번 포스팅에서는 Entity 와 repository를 작성하였고, 이번 포스팅에서는 controller부분을 설정하면서 시작할것이다. 저번에 만든 bookController.java 파일을 이어서 사용할것이다. test이름이 있는 method 말고 추가로 method를 만들어주도록 한다. 그리고 위에 annotation에서 우리는 restapi를 사용할 예정이라 controller annotation을 restapi사용하기 위해 변경을 해주고 RequestMapping annotation을 사용하여 대분류 url 주소도 추가를 해주자. 모두 적용하면 아래와 같이 된다. controller 설정 import org.springframework.stereotype.Controller; import org... 2022. 2. 5. SpringBoot/JPA part.6 JPA를 사용하여 Data를 이용하려면 Entity와 JpaRepository 에 대해서 알아야한다. JPA에서는 entity를 토대로 데이터를 생성하고 처리 및 가공을 한다. 그리고 하나의 객체가 되기도 한다. 또 entity는 데이터베이스의 테이블을 뜻한다. entity 패키지 안에 book.java entity 를 하나 만들고 다음처럼 채워보도록 한다. entity 생성 package com.test.test.entity; import java.time.LocalDateTime; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.pers.. 2022. 2. 4. SpringBoot/JPA part.5 저번 포스팅 까지는 springboot 예제를 하였고 이번 포스팅 부터 JPA기능을 더해서 mysql데이터베이스와 연동하는 포스팅을 작성해볼 것이다. jpa가 뭔지 모르시는 분들은 아래 참고 포스팅을 한번 보고 오는것이 도움이 될 것이다. 먼저 처음 프로젝트 만들때 제대로 따라왔다면 추가가 되어있을텐데 pom.xml 파일에 아래 내용이 있는지 확인을 하고 없다면 추가해주도록 한다. pom.xml 파일에 dependency 추가 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime .. 2022. 2. 3. SpringBoot/JPA part.4 바로 본론으로 들어가도록 하자. 먼저 만들어진 test.jsp파일에는 아래와 같이 작성을 하였다. 보여질 test.jsp 파일 작성 hello 다음으로는 controller에 요청되는 url주소에 따라 현재 jsp를 보여주기 위한 코드를 짜보도록 할 것이다. 추후에 저번 spring에서 했던 book 관련 데이터베이스를 사용할것이라서 지금부터 이름을 book으로 하겠다. controller package 안에 bookController.java파일을 만들고 이렇게 작성을 하자. controller.java 파일 생성, 작성 package com.test.test.controller; import org.springframework.stereotype.Controller; import org.springf.. 2022. 2. 2. SpringBoot/JPA part.3 저번 포스팅 까지는 이클립스 내 외부 적으로 셋팅을 해주었고 이번 포스팅부터 실제 작성을 시작할 것이다. 저번 시간까지 잘 따라왔다면 현재 이클립스에서 옆에 package Explorer에는 다음과 같이 보일 것이다. 아시겠지만 위에 src/main/java는 패키지로 클래스를 구현할것이고, 따로 프론트엔드를 다루지 않아서 간단하게 아래 src/main에 webapp폴더로 페이지를 만들것이다. src/main/webapp 폴더 생성 일단 보여질 페이지를 먼저 만들어보자. 아래 사진과 같이 webapp과 WEB-INF, views를 만들고 나는 test.jsp라는 이름으로 파일을 만들고 안에 내용은 단순 hello만 보이게 해볼것이다. 다음은 위에 패키지를 만들것이다. 이름은 달라도 상관은 없으나 직관적으.. 2022. 2. 2. 이전 1 ··· 38 39 40 41 42 43 44 다음 반응형