Tag Archives: Criteria

Hibernate Jpa Criteria쿼리

도메인 구조

class Tag {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  private boolean enabled;
  @Column(length = 50, unique = true)
  private String name;
  private String description;
}

도메인 구조는 동일하다. 하이버네이트 전용 어노테이션이나 스프링Data전용 어노테이션 등등이 있긴한데…
여기저기서 JPA걸쓰면 다 먹히니까 특별한 용도가 아니면 JPA어노테이션을 사용하는게 좋다.

Jpa 쿼리

  Tag category = new Tag();
  String keyword = "name";

  CriteriaBuilder cb = entityManager.getCriteriaBuilder();
  CriteriaQuery cq = cb.createQuery();
  Root e = cq.from(category.getClass());
  cq.select(e);
  if(keyword!=null && !keyword.isEmpty()){
  //ParameterExpression param = cb.parameter(String.class, keyword);
    cq.where(cb.like(e.get("name"), keyword+"%"));
  }
  //Query query = entityManager.createQuery(cq);
  //return query.getResultList();
  TypedQuery query = entityManager.createQuery(cq);
  List list = query.getResultList();
  System.out.println(list);

JPA는 이런느낌.. 뭐 다를게 없는데 구조가 살짝 다르다.

하이버네이트

아 이건..DetachedCriteria가지고 했었는데 기억이 잘 안난다.
테스트코드 만든후에..

Hibernate 쿼리 날리기 – hql, criteria

Criteria 쿼리

Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.le("playTime",length));
criteria.add(Restrictions.like("title","%A%");
//criteria.add(Property.forName("palyTime").le(ength));//위와 동일한 문장
criteria.Order(Order.asc("title");
criteria.ignoreCase();
criteria.list();

 

HQL 쿼리

Users 테이블이 있는 경우

Select * from Users;

from com.beansugar.templates.dto.Users 와 같은 형태의 쿼리