package com.hrmsys.dao.impl;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.util.Assert;
public class BaseDAO extends HibernateDaoSupport {
public static final Log log = LogFactory.getLog(BaseDAO.class);
/**
* 保存实体
* @param entity
*/
public boolean save(Object entity){
try{
this.getHibernateTemplate().save(entity);
}catch(Exception e){
e.printStackTrace();
log.info("save "+entity.getClass().getName()+" is failed!");
return false;
}
return true;
}
/**
* 保存或更新某个实例
*
* @param entity
*/
public boolean saveOrUpdate(Object entity) {
try{
this.getHibernateTemplate().saveOrUpdate(entity);
}catch(Exception e){
e.printStackTrace();
log.info("saveOrUpdate " + entity.getClass().getName() + " is failed!");
return false;
}
return true;
}
/**
* 删除某个实例
*
* @param entity
*/
public void delete(Object entity) {
try{
this.getHibernateTemplate().delete(entity);
}catch(Exception e){
e.printStackTrace();
log.info("delete " + entity.getClass().getName() + " is failed!");
}
}
/**
* 依据id删除实体
*
* @param <T>
* @param clazz
* @param id
*/
@SuppressWarnings("unchecked")
public <T> boolean deleteById(Class clazz, Serializable id) {
try{
this.delete(this.get(clazz, id));
}catch(Exception e){
e.printStackTrace();
log.info("delete by id for " + clazz.getName() + " is failed!");
return false;
}
return true;
}
/**
* merge()方法,会根据对象是否进行了实质性修改,来决定是否执行相应的update/delete/update语句,
* 而upate()则不会进行比较,只用给定的对象信息覆盖原有信息
* 合并后的entity实例仍然是一个脱管态,而save或saveOrUpdate执行后变为持久态
*
* @param entity
*/
public boolean update(Object entity) {
try{
this.getHibernateTemplate().merge(entity);
}catch(Exception e){
e.printStackTrace();
log.info("update "+ entity.getClass().getName() + " is failed!");
return false;
}
return true;
}
/**
* 返回所给id的实体类持久化实例,如果实例不存在则返回null。 该方法不会返回没有初始化的实例。
*
* @param <T>
* @param clazz
* @param id
* @return
*/
@SuppressWarnings("unchecked")
public <T> T get(Class<T> clazz, Serializable id) {
try{
return (T) getHibernateTemplate().get(clazz, id);
}catch(Exception e){
e.printStackTrace();
log.info("get by id for " + clazz.getClass().getName() + " is failed!");
}
return null;
}
/**
* 懒加载 返回所给id的实体类持久化实例,假定该实例存在。该方法可能返回一个代理实例, 这个代理实例在非id的方法被访问的时候根据需要初始化。
* 如果查找的实例不存在,抛出异常。
*
* @param <T>
* @param clazz
* @param id
* @return
*/
public <T> T load(Class<T> clazz, Serializable id) {
return (T) getHibernateTemplate().load(clazz, id);
}
/**
* 直接查询所有数据 当数据大时易产生性能问题
*
* @param <T>
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public <T> List<T> findAll(Class<T> clazz) {
try{
return this.getHibernateTemplate().loadAll(clazz);
}catch(Exception e){
e.printStackTrace();
log.info("find all for " + clazz.getClass().getName() + " is failed!");
}
return null;
}
/**
* 依据属性按序查询出所有 当数据大时易产生性能问题
*
* @param <T>
* @param clazz
* @param orderBy
* @param isAsc
* @return List<T>
* @see DetachedCriteria用于有大量的动态条件查询,是一种离线的查询 不需要session创建,需Critteria正相反
*/
@SuppressWarnings("unchecked")
public <T> List<T> findAll(Class<T> clazz, String orderBy, boolean isAsc) {
Assert.hasText(orderBy);
if (isAsc) {
return this.getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(clazz).addOrder(
Order.asc(orderBy)));
} else {
return this.getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(clazz).addOrder(
Order.desc(orderBy)));
}
}
/**
* 强制Session冲刷。将当前Session中所有维持在内存中的保存、更新和删除持久化状态同步到数据库。
* 该方法必须在事务提交和Session关闭之前调用
* 。建议只在相同的事务内后续操作依赖于之前操作对数据库的改变时使用,一般情况建议依赖于事务提交时的自动冲刷即可,无需手动调用此方法。
*/
public void flush() {
this.getHibernateTemplate().flush();
}
/**
* 从Session的缓存中移除该实例。该实例所有的更改将不会被同步到数据库。
*
* @param entity
*/
public void evict(Object entity) {
this.getHibernateTemplate().evict(entity);
}
/**
* 清除Session中缓存的所有对象,并取消当前Session中所有维持在内存中的保存、更新和删除持久化状态。
* 该方法不会关闭已经打开的迭代器或ScrollableResults实例。
*/
public void clear() {
this.getHibernateTemplate().clear();
}
/**
* 根据hql和value查询
*
* @param hql
* @param values
* @return
*/
public List findByHQLAndValue(String hql, Object... values) {
try{
return this.getHibernateTemplate().find(hql, values);
}catch(Exception e){
e.printStackTrace();
log.info("execute for '"+ hql + "' is failed!");
}
return null;
}
/**
* 根据hql查询
* @param hql
* @return
*/
public List findByHQL(String hql) {
try{
return this.getHibernateTemplate().find(hql);
}catch(Exception e){
e.printStackTrace();
log.info("execute for '" + hql + "' is failed!");
}
return null;
}
/**
* 根据clazz propertyName value进行查询
*
* @param <T>
* @param clazz
* @param propertyName
* @param value
* @return
*/
@SuppressWarnings("unchecked")
public <T> List<T> findByProperty(final Class<T> clazz,
final String propertyName, final Object value) {
try{
Assert.hasText(propertyName);
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return createCriteria(clazz, session,
Restrictions.eq(propertyName, value)).list();
}
});
}catch(Exception e){
e.printStackTrace();
log.info("findByProperty for " + clazz.getClass().getName() + " is failed!");
}
return null;
}
/**
* 创建一个criteria 一个中介类 Criterion是个接口,其实例可以由Restritions来创建
*
* @param <T>
* @param clazz
* @param session
* @param values
* @return
*/
public <T> Criteria createCriteria(Class<T> clazz, Session session,
Criterion... values) {
Criteria criteria = session.createCriteria(clazz);
for (Criterion value : values) {
criteria.add(value);
}
return criteria;
}
/**
* 按属性查询且排序
*
* @param <T>
* @param clazz
* @param propertyName
* @param value
* @param orderBy
* @param isAsc
* @return
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
hrmsys.zip_Java 人力资源_人力_人力资源 权限_人力资源管理_资源管理 (1364个子文件)
EmpServiceImpl.class 10KB
BaseDAO.class 9KB
EmpAction.class 8KB
Employee.class 8KB
FileExport.class 8KB
UserAction.class 7KB
PermissionServiceImpl.class 6KB
UnitDAO.class 6KB
ZhougzapDAO.class 6KB
SalaryBean.class 6KB
DeptServiceImpl.class 5KB
EmployeeBean.class 5KB
EncouragePunishAction.class 5KB
ValidateCodeServlet.class 5KB
UserDAOImpl.class 5KB
UserServiceImpl.class 4KB
JobChangeServiceImpl.class 4KB
MenuServiceImpl.class 4KB
JobChangeAction.class 4KB
DeptAction.class 4KB
PermissionAction.class 4KB
EmployeeDAOImpl.class 4KB
JobAction.class 4KB
EncouragePunishDAOImpl.class 3KB
JobDAOImpl.class 3KB
RoleServiceImpl.class 3KB
JobServiceImpl.class 3KB
DepartmentDAOImpl.class 3KB
JobChange.class 3KB
AbstractUnit.class 3KB
EncouragePunishServiceImpl.class 3KB
SalaryBasicBean.class 3KB
EncouragePunish.class 3KB
User.class 3KB
JobChangeDAOImpl.class 3KB
TrainBean.class 3KB
HibernateSessionFactory.class 3KB
CurrentDate.class 2KB
RolePermissionDAOImpl.class 2KB
TrainRecordBean.class 2KB
RoleAction.class 2KB
AbstractZhougzap.class 2KB
RolePermissionServiceImpl.class 2KB
SequenceBuilder.class 2KB
BaseAction.class 2KB
PermissionDAOImpl.class 2KB
AuthorityFilter.class 2KB
MenuBean.class 2KB
Menu.class 2KB
Job.class 2KB
Role.class 2KB
BackFilter.class 2KB
Department.class 2KB
UserBean.class 2KB
Permission.class 2KB
BaseDAO$2.class 2KB
MD5.class 2KB
BaseDAO$3.class 2KB
RolePermissionAction.class 2KB
BaseDAO$1.class 2KB
MenuAction.class 1KB
DepartmentBean.class 1KB
BaseDAO$4.class 1KB
RolePermission.class 1KB
MenuDAOImpl.class 1KB
Authority.class 1KB
RoleDAOImpl.class 1KB
PermissionBean.class 1KB
RecruitmentBean.class 1KB
EncouragePunishBean.class 1KB
RoleBean.class 1KB
EmpService.class 1KB
LogListener.class 990B
Unit.class 969B
EmployeeDAO.class 930B
DepartmentDAO.class 894B
StaticValue.class 847B
UserDAO.class 769B
PageBean.class 751B
UserService.class 742B
JobDAO.class 700B
JasperReportUtil.class 683B
JobChangeDAO.class 675B
Zhougzap.class 665B
EncouragePunishDAO.class 523B
DeptService.class 521B
EncouragePunishService.class 512B
JobChangeService.class 512B
ConditionValidate.class 501B
JobService.class 467B
SalaryBasicService.class 456B
BaseHibernateDAO.class 454B
RolePermissionDAO.class 449B
PermissionDAO.class 438B
RoleDAO.class 321B
MenuDAO.class 318B
RoleService.class 317B
MenuService.class 316B
PermissionService.class 274B
RolePermissionService.class 198B
共 1364 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
weixin_42651887
- 粉丝: 77
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功