JPA강좌,QueryDSL4.X 조회, 수정, 삭제, update, delete 배치쿼리, JPADeleteClause, JPAUpdateClause
n 데이터 조회 쿼리작성
JPAQuery 직접 생성하는 경우
import static model.QEmp.emp;
@PersistenceContext
EntityManager em;
JPAQuery<?> query = new JPAQuery<Void>(em);
Emp emp = query.select(emp).from(emp)
.where(emp.empno.eq(7369))
.fetchOne(); //한건만 추출
JPAQueryFactory를 이용한다면
(내부적으로 JPAQuery 인스턴스를 가지고 있다.)
[스프링 설정 파일에서 JPAQueryFactory를 빈으,로 등록]
@Bean
public JPAQueryFactory queryFactory() {
//return new JPAQueryFactory(JPQLTemplates.DEFAULT, em);
return new JPAQueryFactory(em);
}
[Repository 구현체에서]
import static model.QEmp.emp;
@Autowired
JPAQueryFactory queryFactory;
Emp emp = queryFactory.selectFrom(emp)
.where(emp.empno.eq(7369))
.fetch();
n 수정
[JPAQuery 또는 JPAQueryFactory 두방법 모두 가능]
Long affectedRow = new JPAUpdateClause(em, emp)
.where(emp.empno.eq(empno))
.set(emp.ename, newEname)
.execute();
[JPAQueryFactory 방법]
// update 메소드 내부에서 JPAUpdateClause를 사용한다.
Long affectedRow = queryFactory.update(emp)
.where(emp.empno.eq(empno))
.set(emp.ename, newEname)
.execute();
n 삭제
[JPAQuery 또는 JPAQueryFactory 두방법 모두 가능]
Long affectedRow =new JPADeleteClause(em, emp)
.where(emp.job.eq(job))
.execute();
[JPAQueryFactory 방법]
// delete 메소드 내부에서 JPADeleteClause를 사용한다.
Long affectedRow = queryFactory.delete(emp)
.where(emp.job.eq(job))
.execute();
댓글 없음:
댓글 쓰기