본문 바로가기

Java/ORM16

JAVA ORM - Spring Data JPA(동적쿼리) ㅇ 동적쿼리란실행 시점에 쿼리의 내용이 동적으로 생성되는 SQL쿼리. 입력이나 특정 조건에 따라 쿼리의 일부 또는 전체가 달라지는 쿼리.String sql = "SELECT * FROM Users WHERE 1=1";if (name != null) { sql += " AND name = '" + name + "'";}if (age != null) { sql += " AND age = " + age;}위의 코드에선 name이 null이 아니고, age가 null이 아니면,최종 코드는"SELECT * FROM Users WHERE 1=1 AND name = ' ㅇㅇㅇ ' AND age = ㅇㅇ'"이렇게 작성된다. ㅇ SpringDataJpa의 동적쿼리Jpa에서 쿼리를 작성해야할땐 JPQL을 사용한.. 2024. 8. 29.
JAVA ORM - Spring Data JPA(웹 페이징,정렬) https://thcoding.tistory.com/264 JAVA ORM - Spring Data JPA(페이징, 슬라이스, countQuery)페이징(Paging)페이징은 데이터를 페이지단위로 나눠 가져오는 기술. Spring data Jpa에서는 'pageable'인터페이스와 'Page' 객체를 사용해 페이징을 처리한다.public interface UserRepository extends JpaRepository { Pagthcoding.tistory.com 저번 페이징 처리에 이어서 웹에서 편리하게 사용할 수 있도록 spring data jpa가 제공해주는 페이징,정렬방법에 대해 알아보자.1. 먼저 컨트롤러에 아래와같이 member를 100명 만들어주도록 하자.@PostConstruct p.. 2024. 8. 27.
JAVA ORM - Spring Data JPA(사용자 정의 리포지토리, Auditing의 두가지 방법) 사용자 정의 리포지토리Spring data Jpa는 사용자가 인터페이스만 정의하고 구현체는 스프링이 자동생성해줘서 편하지만, 사용자가 직접 정의해야 할 상황도 발생한다. JPA, 스프링 JDBC, MyBatis...등등 public interface CustomUserRepository { List findUsersByCustomQuery(String customParameter);}1. 이런 인터페이스를 하나 만든다. 2. 그다음 방금 만든 인터페이스를 구현할 클래스를 만들어야 하는데, 이름은 그 인터페이스이름 뒤에 'Impl'을 붙혀줘야 한다.@RequiredArgsConstructorpublic class CustomUserRepositoryImpl implements CustomUserRep.. 2024. 8. 25.
JAVA ORM - Spring Data JPA(페이징, 슬라이스, countQuery) 페이징(Paging)페이징은 데이터를 페이지단위로 나눠 가져오는 기술. Spring data Jpa에서는 'pageable'인터페이스와 'Page' 객체를 사용해 페이징을 처리한다.public interface UserRepository extends JpaRepository { Page findByLastName(String lastName, Pageable pageable);}반환타입은 Page 객체, 인자로는 Pageable 객체를 받아야한다.Pageable pageable = PageRequest.of(0, 10, Sort.by("firstName").ascending());Page page = userRepository.findByLastName("Smith", pageable);List .. 2024. 8. 23.