쿼리 한번으로 대량의 데이터를 수정

@Test
public void buildUpdate() {
	long result = queryFactory
			.update(member)
			.set(member.username, "비회원")
			.where(member.age.lt(28))
			.execute();

	em.flush();
	em.clear();

	List<Member> members = queryFactory
			.selectFrom(member)
			.orderBy(member.age.asc())
			.fetch();

	assertThat(result).isEqualTo(2);
	assertThat(members.get(0).getUsername()).isEqualTo("비회원");
	assertThat(members.get(1).getUsername()).isEqualTo("비회원");
	assertThat(members.get(2).getUsername()).isEqualTo("member3");
	assertThat(members.get(3).getUsername()).isEqualTo("member4");
}

기존 값을 더하거나 연산 할 때

@Test
public void bulkAdd() {
	long resultCount = queryFactory
			.update(member)
			.set(member.age, member.age.add(1))
			.execute();

	assertThat(resultCount).isEqualTo(4);
}

벌크 삭제

@Test
public void bulkDelete() {
	long resultCount = queryFactory
			.delete(member)
			.where(member.age.gt(18))
			.execute();

	assertThat(resultCount).isEqualTo(3);
}