반응형
HQL없이 테이블의 모든 행을 검색합니까?
저는 Hibernate 4를 사용하고 있으며 단순히 테이블의 모든 행을 나열하고 싶습니다. 내가 찾은 모든 솔루션은 "from tablename"과 같은 것을 사용하는 것이 좋지만 문자열에 테이블 이름을 하드 코딩하는 것을 피하고 싶습니다.
당신이 사용할 수있는
session.createCriteria(MyEntity.class).list();
예를 들면.
HQL은 테이블 이름을 사용하지 않습니다. 엔티티 이름을 사용합니다. 그리고 엔티티 이름은 (기본적으로) 클래스 이름입니다. 그래서 당신은 사용할 수 있습니다
String hql = "select a from " + TheEntity.class.getSimpleName() + " a";
하지만 여기서는 타입 안전성보다 가독성을 선호하고
String hql = "select a from TheEntity a";
어쨌든 쿼리에 대한 자동화 된 테스트가 있어야합니다.
// Hibernate 클래스
public class CommonDAO<T> {
Session session = null;
Transaction transaction = null;
private Class<T> clazz;
public CommonDAO(){ //constructor
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
Type genericSuperclass = this.getClass().getGenericSuperclass();
if (genericSuperclass instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericSuperclass;
Type type = pt.getActualTypeArguments()[0];
clazz = (Class<T>) type;
}
}
public T listById(Object id) {
T object = null;
try {
object = (T) session.get(clazz, (Serializable) id);
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
}
// 사용자 클래스
public class UserDAO extends CommonDAO<UserMaster> { // Here UserMaster is pojo
public UserDAO() {
super();
}
public static void main(String ar[]) {
UserMaster user = new UserDAO().listById(1); // 1 is id
System.out.println(user.getUserName());
}
}
참고 URL : https://stackoverflow.com/questions/9084143/retrieving-all-rows-of-a-table-without-hql
반응형
'developer tip' 카테고리의 다른 글
Chrome 확장 프로그램 아이콘을 클릭 할 때마다 스크립트 실행 (0) | 2020.12.07 |
---|---|
Silverlight와 유사한 WPF의 유효성 검사 오류 스타일 (0) | 2020.12.07 |
Python 용 Vim 설정 (0) | 2020.12.07 |
자바에서 문자열을 날짜로 변환 (0) | 2020.12.07 |
Play 2.x : 공통 버튼으로 AJAX 요청을 만드는 방법 (0) | 2020.12.07 |