본문 바로가기
Tech/Web

ORM과 JPA

by 소라소라잉 2019. 11. 25.

domian 아래 dto,vo로 만들어줬던것들 -> Entity Class.
repositories > 내부적으로 AOP동작
-> interface 하나만 선언해주면 crud, 페이징 모두 끝남

- ORM(Object Relational Mapping) : 객체와 DB테이블이 매핑을 이루는 것.(테이블을 객체로서 다룰 수 있게 함)

 

1) ORM을 이용하면 SQL Query가 아닌 메서드로 데이터를 조작할 수 있다.(ex. user테이블과 매핑된 객체를 user라고 할때, user.findAll()메서드로 select*from user를 동작시킬 수 있음)

 

2) 쿼리를 직접 작성하지 않고 메서드로 핸들하다보니 ORM을 사용하면 생산성이 높아지지만, 쿼리가 복잡해지만 ORM으로 표현하는데 한계가 있고 성능이 쿼리를 이용한 동작보다 느릴 수 있다.

 

3) 각 language마다 orm을 구현한 스펙이 있음

(java는 JPA-jsut api ) 이 JAP를 구현한 제품이 Hibernate.

ORM(Object Relational Mapping)

- JPA(Java Persistent API) : 자바 ORM기술에 대한 API 표준 명세.

 

1) ORM을 사용하기 위한 인터페이스를 모두 모아둠.

2) JPA를 사용하기 위해서는 이 JPA를 구현한 Hiberante같은 ORM프레임워크 제품을 사용해야 한다.

- JDBC와 JPA

?

 

 

- 아래없는내용 : JPA Query Method (메소드명만으로 쿼리를 만들어 주는 것)  아래 블로그 참고

https://ict-nroo.tistory.com/117

 

[JPA] Spring Data JPA와 QueryDSL 이해, 실무 경험 공유

Spring Data JPA와 QueryDSL JPA 기반 프로젝트 Spring Data JPA QueryDSL Spring Data JPA 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결 개발자는 인터페이스만 작성한다 스프링 데이터 JPA가 구현 객체..

ict-nroo.tistory.com

 

 

- swagger : 자동으로 html페이지를 만들어줌(Rest API DOCUMENT를 자동으로 만들어준다.). boot와 결합하면 좋다(?)

  1. 의존성 라이브러리설정, 컨피그레이션 설정 필요 (아래 블로그 참고)

https://jojoldu.tistory.com/31

 

Swagger로 API 문서 자동화하기

일반적으로 여러명이서 개발하는 웹 서비스에서 단일 프로젝트가 DB에서 데이터를 가져오고, 화면을 그려주고, 회원정보를 저장하는등 모든것을 담당하진 않는다. 아무리 간단한 구조라해도 아래와 같은 형태정도..

jojoldu.tistory.com

: pom.xml에 swagger 관련 라이브러리 추가(2개)

: zerock.day2 하위에 config 폴더 만들고, SawggerConfig.java넣기 => html 페이지가 만들어짐 > 컨트롤러가 없기때문에 아무것도 뜨진 않음. (error컨트롤러는 있어서 그거는 뜸)

(http://localhost:8080/swagger-ui.html)

 

: Controller 추가 

- zerock.day2 하위에 controller 폴더 만들고 BoardController -> @RestController, @RequestMapping("/board")

: 페이지보면 boardController 보이고 파라미터 테스트를 할 수 있음.

 

(( 부트의 목적은 개발을 빨리하는 거기 때문에 sevice layer를 안만드는 경우가 많지만, 정석으로 service layer도 만들어 줘야 함. ))

: BoardRepository 주입받고

 return new ResponseEntity<>(boardRepo.findById(bno).get(),HttpStatus.OK);    하게되면

Json데이터를 확인할 수 있음(restcontroller니까)

 

 

POST MAPPING도 하자

 

테스트도 해보자

 

DB확인해보면 잘 등록된것을 확인할 수 있음. 

 

 

 

------------------- list getmapping

 

요로코롬(왼쪽) 만들면 파라미터 수집이 안됨. 

ppt의 properties 4줄 설정해주면 됨.

-> 그러나 pageable의 파라미터의 page는 pageNum으로 자동 설정되어있고

우리가 설정한 property는 page로 되어있음. -> utl에 board/list?page=22 이런식으로 직접 설정하면 파라미터 수집이 잘 됨. 그러나 swagger ui 에서 테스트해보면 안됨(파라미터명이 pageNum으로 되어있어서) 

그래서 그냥.. URL직접 수정 해라.. 

 

요로코롬 하면 

 

테스트 잘됨.

page파라미터 안주면 기본 1페이지. url뒤에 ?page=3 이런식으로 해주면 됨.. 

 

 

------------------ 검색 

 

return type을 page로 하면 searchDTO는 어떻게 넘겨줘? -> 객체화해줘야함 -> MultiValueMap이용! 

 

'Tech > Web' 카테고리의 다른 글

Spring framework이 없었다면?  (0) 2020.01.20
JPQL과 QueryDSL  (0) 2019.12.01
[Spring] UriComponentsBuilder의 사용  (0) 2019.11.22
MyBatis Mapper XML파일(ResultMap,Collection)  (0) 2019.11.18
Spring-Web-Security  (0) 2019.11.15

댓글