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();
댓글 없음:
댓글 쓰기