분류 전체보기 (160) 썸네일형 리스트형 Spring Data JPA 반환타입 컬랙션 , 단건 , Optional 등등 여러가지를 반환 받을수있다 자세한내용은 아래 링크에서 docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types Table 9. Query return types검색 주의할 점은 JPASpring Data JPA에서는 조회되는 값이 없더라도 Exception이 터지지않게 내부적으로 Try Catch문을 구현해 놨기떄문에 컬랙션일 경우 빈 컬랙션을 반환하고 단건일 경우 null을 반환해준다. 데이터가 있을지 없을지 모르면 Optional을 사용하여 분기해준다. 반환 타입은 하나인데 결과가 2개이상이라면 예외가 터진다. Spring Data JPA @Query -컬렉션 파라미터 바인딩 파라미터를 컬렉션으로 넘겨서 조회할 수도 있다 위 코드의 쿼리를 보면 in 절을 이용하여 names에 들어 있는 값을 모두 조회 하였다. 위의 메서드를 통해 나온 쿼리 이다 List에 담겨있던 username이 in절에 바인딩 되었다. Spring Data JPA @Query-엔티티 조회 @Query Repository 메서드에 쿼리 정의하기 리파지토리 메서드에 @Query를 통해 바로 쿼리를 작성해놨고 메서드에서는 @Param을 통해 파라미터를 가져왔다. 위의 메서드를 통해 생성된 쿼리 username과 age가 where 절에 들어 갔다. 장점 -애플리케이션 로딩시점에 지정된 쿼리를 SQL로 파싱해보고 문제가 있으면 오류를 낸다. Spring Data JPA Named query 기능 Named query 기능 -엔티티에 쿼리를 지정해놓고 메서드에서 불러다가 사용할 수 있다. 1.순수 JPA NamedQuery 기능 엔티티에 @NamedQuery 어노테이션을 통해 쿼리를 지정해준다 name에는 메소드명 , query에는 사용할 쿼리 리파지토리에 메서드를 만들어주고 createNamedQuery를 통해 엔티티에 지정해놓은 NamedQuery를 불러올 수 있다. 위에 메서드를 실행한 결과 쿼리다 유저네임이 where 절에 들어갔다. 스프링 데이터 JPA에서는 더 편리하게 위의 기능을 사용할 수 있다. 1.스프링 데이터 JPA에서 NamedQuery 사용 리파지토리 인터페이스에서 @Query를 사용해 엔티티에 지정해놓은 @NamedQuery를 불러온다 파라미터를 불러올 경우 @Param을 .. Spring Data JPA query method 기능 query method 기능 - Spring Data JPA에 구현되지 않은 기능을 구현하고 싶을때 query method를 사용한다. - 메서드 이름을 통해서 쿼리를 만들어낸다. 위 메서드는 순수 JPA로 유저이름과 나이를 파라미터로 받아 유저이름이 일치하고 나이가 파라미터로 받은 나이 보다 많은 유저를 찾아내는 메서드이다 위는 spring data jpa에서 querymethod기능으로 만든 메서드다 메서드명을 통해 쿼리가 작성되고 파라미터가 바인딩 된다. 정해진 프로퍼티를 통해 작동하기 때문에 맞춰진 형식에 맞게 메소드명을 만들어야한다. 정해진 프로퍼티들 조회: find ... By ,read...By, query...By get...By count: count ...By -> long 타입 반환 .. Spring Data JPA Spring에서 JPA를 더 편하게 사용하기 위해서 사용하는 라이브러리 인터페이스 형식으로 되있으며 구현체없이 인터페이스를 상속을 받아 기능들을 사용한다. 리파지토리를 인터페이스 형식으로 만들고 해당 리파지토리를 사용하는 곳에서 @Autowired를 통해 인젝션을 받을때 프록싱을 통해 객체를 생성하고 스프링 데이터 JPA가 자동으로 기능들이 내장되 있는 리파지토리를 만들어 인젝션해 준다. 라이브러리를 보면 spring data commons 가있고 spring data jpa가 있다 spring data commons는 공통 기능 저장되 있고 CrudRepository PagingAndSortingRepository 같은 것들이 있다 spring data jpa는 JPA관련 기능 저장되있고 JpaRepo.. Spring boot Lombok 사용을 위한 셋팅 IntelliJ에서 Lombok을 사용하기 위해서는 Setting - annotation processors를 검색 하여 Enable annotation processing을 체크해줘야 한다. Spring Annotation @RequestBody @ResponseBody @RequestBody -바디에 정보가 담겨오는 post 방식 요청에서 파라미터를 읽어들일 때 사용하는 어노테이션 @ResponseBody -메서드에서 적용되면 해당 메서드의 리턴 값을 HTTP 응답 데이터로 사용한다 RestfulAPI에서 JSON,XML,플레인텍스트 등 .. 데이터를 응답할때 사용할 수 있다. @RequestBody @ResponseBody예제코드 input form 인풋화면 컨트롤러 post 방식 요청 인풋 폼에 입력되어 전송된 데이터가 경로를 타고 컨트롤러로 들어와 @RequestBody가 선언된 name변수에 담겼다 콘솔창에는 입력한 문자가 찍힌다 응답은 @ResponseBody로 지정되 있기 때문에 컨트롤러에 리턴값이 바로 응답되었다 이전 1 ··· 16 17 18 19 20 다음