본문 바로가기

분류 전체보기

(330)
SpringDataJPA - EntityGraph, fetch join 간단하게 하기 fetch join을 SpringDataJPA에서는 @EntityGraph 어노테이션을 통해 간단하게 할 수 있다. // 한방쿼리로 들고 오는 fetch join@Query("select m from Member m left join fetch m.team")List findMemberFetchJoin();위의 fetch join 메서드를 EntityGraph를 사용하면 아래와 같이 바꿀 수 있다. EntityGraph를 이용하면 메서드 이름으로 쿼리 생성 + 패치조인처럼 쓸 수 있음@Override@EntityGraph(attributePaths = {"team"})List findAll();jpql 대신 @EntityGraph 어노테이션을 사용한다. attributePaths에 fetch join할 ..
SpringDataJPA - 벌크성 수정 쿼리 Dirty Checking으로 여러 건 수정시 건마다 쿼리 발생함.쿼리 한 번으로 쫙 다 수정하는 건 JPA에서는 벌크성 수정쿼리라고 함벌크성 수정 쿼리를 이용하면 한 번의 쿼리로 대량의 데이터를 수정할 수 있다. @Modifying 어노테이션 사용Repository 수정 메서드에 @Modifying 을 붙여준다(안붙이면 에러 발생)// 회원의 나이를 변경하는 벌크성 쿼리// age 이상인 경우 1살 추가@Modifying //Modifying이 있어야 JPA의 executeUpdate 호출함@Query("update Member m set m.age = m.age + 1 where m.age >= :age")int bulkAgePlus(@Param("age") int age);  test 코드 예제)@..
SpringDataJPA - 페이징을 쉽게 하는 법 Page 객체Repository 인터페이스에 Page 메서드 이름(Pageable 변수이름)을 작성한다.public interface MemberRepository extends JpaRepository { // 페이징 Page findByAge(int age, Pageable pageable); SpringDataJPA로 페이징 처리를 하면 페이징 계산을 할 필요가 없다. 이미 구현되어있다,. 메서드 호출 시 Pageable 구현체(PageRequest)를 매개변수로 넣어준다.*Page 인덱스가 1이 아니라 0부터 시작함. 유의 아래는 test 코드이다.int age = 10;// SPRING DATA JPA는 page index가 1이 아니라 0부터 시작한다 (PageRequest = Pa..
SpringDataJPA - 메서드 및 유연한 반환타입 SpringDataJPA 주요 메서드save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다. delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출 findById(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find() 호출 getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference() 호출 findAll(…) : 모든 엔티티를 조회한다. 정렬( Sort )이나 페이징( Pageable ) 조건을 파라미터로 제공할 수 있다.참고: JpaRepository 는 대부분의 공통 메서드를 제공한다.쿼리메소드 기능쿼리 메소드 기능 3가지- 메소드 이름으로 쿼리 생성(간단한 쿼..
문자열과 String 클래스 Contains() 문자열에 지정 문자열이 포함되어 있는지 확인한다. // str2를 포함시 1을 리턴, 포함x : 2를 리턴 public int Solution(String str1, String str2){ return (str1.contains(str2)? 1: 2); 문자열의 길이를 구하는 메서드 length String s = "ABC이지스DEF"; int length = s.length(); // 9 System.out.println(length); 문자열 안에서 특정 문자를 꺼내는 메서드 charAt String s = "ABC이지스DEF"; char c = s.charAt(0); // A System.out.println(c); 부분 문자열을 꺼내는 메서드 substring. String ..
Optional<T> Optional 는 T타입의 객체를 감싸는 래퍼 클래스이다. 모든 타입의 참조변수를 담을 수 있다. Optional객체에 담아서 반환하면 반환결과가 null인지 체크할 필요 없이 정의된 메서드를 통해 처리할 수 있다. Optional 객체 생성 Optional 객체를 생성할 때는 of() 또는 ofNullable()를 사용한다. public Optional findById(Long id){ Member member = em.find(Member.class, id); return Optional.ofNullable(member); } 참조변수의 값이 null일 가능성이 있으면 ofNullable()를 사용해야한다(of 사용시 NullPointerException발생) // 빈 객체로 초기화 Optional..
InteliJ test 설정 설정이 Gradle로 되어있으면 test 로딩속도가 느릴 수 있다, InteliJ IDEA로 둘 다 변경해준다
도수 정렬 도수정렬은 요소의 대소관계를 판단하지 않고 빠르게 정렬할 수 있는 알고리즘이다. 데이터를 비교,교환하는 작업이 필요 없어 매우 빠르다. 하지만 도수분포표가 필요하기 때문에 데이터의 최솟값과 최댓값을 미리 알고있을 경우에만 사용할 수 있다. public class CountingSort { public static void main(String[] args) { System.out.println("도수정렬"); System.out.println("요솟수: 7 "); int nx = 7; int[] x = new int[]{22,5,11,32,120,68,70}; int max = x[0]; for (int i = 1; i max) max = x[i]; } count..