카테고리 없음
repository - crud (JPA)
제이G
2024. 4. 20. 12:35
Repository
@Repository
@Transactional
public class JpaOrderRepository {
private final EntityManager em;
public JpaOrderRepository(EntityManager em) {
this.em = em;
}
public Order save(final Order order) {
em.persist(order);
return order;
}
public Optional<Order> findById(final Long id) {
Order order = em.find(Order.class, id);
return Optional.ofNullable(order);
}
public List<Order> findByName(final String name) {
String jpql = "SELECT o FROM Order o WHERE o.name = :name";
return em.createQuery(jpql, Order.class)
.setParameter("name", name)
.getResultList();
}
// offset based pagination
public List<Order> findAll(final SearchCondition searchCondition) {
String jpql = "SELECT o FROM Order o ORDER BY o.id";
return em.createQuery(jpql, Order.class)
.setFirstResult(searchCondition.offset().intValue())
.setMaxResults(searchCondition.size())
.getResultList();
}
public List<Order> findAllV2() {
List<Order> resultList = em.createQuery("select o from Order o join o.member m" +
" where o.status = :status " +
" and m.name like :name", Order.class)
.setParameter("status", orderSearch.getOrderStatus())
.setParameter("name", orderSearch.getMemberName())
.setFirstResult(100) // 페이징: 100부터 시작
.setMaxResults(1000)
.getResultList();
}
}