728x90

자바 25

벌크 연산(부제 - DB에 직접 쿼리)

엔티티를 수정하려면 영속성 컨텍스트의 변경 감지 기능이나 병합을 사용한다. 하지만 이방법으로는 수백개 이상의 엔티티를 하나씩 처리하기에는 시간이 너무 오래 걸린다. 이럴 때 여러건을 한 번에 수정하거나 삭제하는 벌크 연산을 사용하면 된다. String sqlString = "update Product p " + "setp.price = p.price * 1.1 " + "where p.stockAmount < :stockAmount"; int resultCount = em.createQuery(qlString) .setParameter("stockAmount", 10) .executeUpdate(); 벌크 연산은 executeUpdate() 메소드를 사용한다. 이 메소드는 벌크 연산으로 영향을 받은 엔티티..

JPA 2022.06.18

고아 객체(feat. orphanRemoval)

JPA는 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능을 제공하는데 이것을 고아 객체(ORPHAN) 제거라 한다. 이 기능을 사용해서 부모 엔티티의 컬렉션에서 자식 엔티티의 참조만 제거하면 자식 엔티티가 자동으로 삭제된다. @Entity public class Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", orphanRemoval = true) private List children = new ArrayList(); ... } 위 코드와 같이 orphanRemoval = true로 설정하면, 컬렉션에서 제거한 엔티티는 자동으로 삭제된다. Parent parent1 = em.find(Pare..

JPA 2022.06.12

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] p.62 실행 오류 해결법

오류 로그 package com.jojoldu.book.awsspring.springboot.web; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.Mo..

Spring 2022.05.16

Optional.of 와 Optional.ofNullable 의 차이

of, ofNullable로 객체 감싸기 자바에서 제공하는 객체를 Optional 객체로 감싸기 위해서는 Optional 에서 제공하는 of 와 ofNullable 매서드를 사용합니다. 둘의 차이점은 of는 인자로서 null값을 받지 않는다는 것이고 ofNullable은 null값을 허용한다는 것입니다. @Test public void givenNonNull_whenCreatesNonNullable() { String name = "saelobi"; Optional opt = Optional.of(name); assertEquals("Optional[saelobi]", opt.toString()); } 아래 코드를 보시면 null값을 of 메서드의 입력으로 받을 시 NullPointerException을..

JAVA 2022.05.13

스트림의 기본 및 간단한 특징

(Java 8이상)스트림(Stream) 이란? 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다. 스트림이 제공하는 기능 - 중간 연산과 최종 연산 중간 연산 - 연산결과가 스트림인 연산. 반복적으로 적용 가능하다. 최종 연산 - 연산결과가 스트림이 아닌 연산. 스트림의 요소를 소모하므로 한번만 적용가능하다. 스트림의 구조 스트림의 특징 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다. 스트림은 Iterator처럼 일회용이다. 최종 연산 전까지 중간연산이 수행되지 않는다. - 지연된 연산 List list = Arrays.asList(4, 2, 5, 1, 3); List sortedList = list.stream().sorted() .collect(Collectors.toLis..

JAVA 2022.02.14
728x90