📄 hibernatedaosupport.java.svn-base
字号:
package util.dao;
import java.io.Serializable;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
public abstract class HibernateDaoSupport<T, PK extends Serializable>
implements Dao<T, PK> {
private static SessionFactory sessionFactory;
protected static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
sessionFactory = new Configuration().configure()
.buildSessionFactory();
}
return sessionFactory;
}
public static void closeSessionFactory() {
if (sessionFactory != null) {
sessionFactory.close();
}
}
public static void initSession() {
getSessionFactory().getCurrentSession().beginTransaction();
}
public Session getSession() {
return getSessionFactory().getCurrentSession();
}
public static void rollback() {
if (getSessionFactory().getCurrentSession() != null) {
if (getSessionFactory().getCurrentSession().getTransaction() != null) {
getSessionFactory().getCurrentSession().getTransaction()
.rollback();
}
}
}
public static void commit() {
if (getSessionFactory().getCurrentSession() != null) {
if (getSessionFactory().getCurrentSession().getTransaction() != null) {
getSessionFactory().getCurrentSession().getTransaction()
.commit();
}
}
}
public static void close() {
if (getSessionFactory().getCurrentSession() != null) {
getSessionFactory().getCurrentSession().close();
}
}
@SuppressWarnings("unchecked")
protected Class entityClass;
@Override
public void create(T entity) {
Session session = this.getSession();
session.save(entity);
}
@Override
public void delete(T entity) {
Session session = this.getSession();
session.delete(entity);
}
@SuppressWarnings("unchecked")
@Override
public T findById(PK id) {
Session session = this.getSession();
T entity = (T) session.get(this.entityClass, id);
return entity;
}
@Override
public void update(T entity) {
Session session = this.getSession();
session.update(entity);
}
@Override
public void saveOrUpdate(T entity) {
Session session = this.getSession();
session.saveOrUpdate(entity);
}
@SuppressWarnings("unchecked")
@Override
public void browse(Pagination<T> pagination) {
Session session = this.getSession();
Criteria criteria = session.createCriteria(this.entityClass);
Integer count = (Integer) criteria.setProjection(
Projections.count(Projections.id().toString()))
.uniqueResult();
pagination.setRecordSum(count);
if (pagination.getRecordSum() > 0) {
criteria = session.createCriteria(this.entityClass);
if (pagination.getOrderFieldName() != null
&& !pagination.getOrderFieldName().trim()
.isEmpty()) {
criteria.addOrder(pagination.isDesc() ? Order
.desc(pagination.getOrderFieldName())
: Order.asc(pagination
.getOrderFieldName()));
}
criteria.setFirstResult(pagination.getSize()
* (pagination.getNo() - 1));
criteria.setMaxResults(pagination.getSize());
pagination.setResults(criteria.list());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -