我有10-12个表,我的主数据在那里,我必须使用hibernate的findAll()
工具加载它们。
所以对于所有这些10-12表我都需要编写类似这样的方法
public List<XYZType> getAllXYZType() {
return XYZRepository.findAll();
}
因此,对于不同的实体,这种代码将重复10-12次。 有什么方法可以让它变得通用吗?
答案 0 :(得分:0)
public <T> List<T> getAll(final Class<T> type) {
Session session = sessionFactory.getCurrentSession();
Criteria crit = session.createCriteria(type);
return crit.list();
}
为了使用它,只需将所需的类传递给函数,它将返回列表。
答案 1 :(得分:0)
在这种情况下,您需要将其设为通用,我认为 Abstract Factory Pattern 就是您要找的。
您的代码应该是这样的:
public interface GenericDAO < T, ID extends Serializable > {
T findById(ID id);
List < T > findAll();
}
请查看 DAO Factory patterns with Hibernate 以获取更多信息。
答案 2 :(得分:0)
public static <T> List<T> getLst(final Class<T> beanClass) {
List<T> lst = new ArrayList<T>();
Session sess = MyUtils.getSessionFactory().openSession();
try {
Criteria cr= sess.createCriteria(beanClass);
lst = cr.list();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
sess.close();
}
return lst;
}