public abstract class AbstractHibernateDAOImpl<T extends Serializable, KeyType extends Serializable> extends HibernateDaoSupport {
protected Class<T> domainClass = getDomainClass();
/**
* Method to return the class of the domain object
*/
protected abstract Class<T> getDomainClass();
@SuppressWarnings("unchecked")
public T load(KeyType id) {
return (T) getHibernateTemplate().load(domainClass, id);
}
public void update(T t) {
getHibernateTemplate().update(t);
}
public void save(T t) {
getHibernateTemplate().save(t);
}
public void delete(T t) {
getHibernateTemplate().delete(t);
}
@SuppressWarnings("unchecked")
public List<T> getList() {
return (getHibernateTemplate().find("from " + domainClass.getName() + " x"));
}
public void deleteById(KeyType id) {
Object obj = load(id);
getHibernateTemplate().delete(obj);
}
public void deleteAll() {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
String hqlDelete = "delete " + domainClass.getName();
int deletedEntities = session.createQuery(hqlDelete).executeUpdate();
return null;
}
});
}
public int count() {
List list = getHibernateTemplate().find("select count(*) from " + domainClass.getName() + " x");
Integer count = (Integer) list.get(0);
return count.intValue();
}
@SuppressWarnings("unchecked")
public List<T> findByExample(T exampleInstance, String[] excludeProperty) {
Criteria crit = getSession().createCriteria(getPersistentClass());
Example example = Example.create(exampleInstance);
for (String exclude : excludeProperty) {
example.excludeProperty(exclude);
}
crit.add(example);
return crit.list();
}
@SuppressWarnings("unchecked")
protected List<T> findByCriteria(Criterion... criterion) {
Criteria crit = getSession().createCriteria(getPersistentClass());
for (Criterion c : criterion) {
crit.add(c);
}
return crit.list();
}
}
分享到:
相关推荐
接下来,我们可以继续构建更多的组件和服务层,例如Service层、DAO层等,同时也可以编写具体的Action类,来处理不同的请求。此外,还需要配置Spring的bean文件,以及Hibernate的相关配置文件,确保各个框架之间能够...
public abstract class BaseServiceForHibernate<T> extends HibernateDaoSupport { // ... 类的具体实现细节 } ``` 通过以上步骤,我们可以成功地构建一个集成了Struts2、Hibernate、Spring和Extjs的开发框架,为...
需要指定的是Spring 1.2.5提供了两套Hibernate的支持包,其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,...
### UML设计模式详解 #### 一、UML概述与历史沿革 UML,即统一建模语言(Unified Modeling ...通过以上代码示例,可以看到抽象工厂模式如何简化了对多个DAO对象的创建和管理,同时也提高了代码的可测试性和可维护性。
public abstract class AbstractAction extends ActionSupport { // 可以在这里定义所有Action类公用的方法和属性 // 例如:初始化方法、错误处理等 } ``` #### 四、具体实现 接下来,我们将详细介绍如何使用...
- **JDBC Abstract and DAO Module**: 提供了一种简单的方法来编写健壮的JDBC代码,避免了常见的错误,如未能正确关闭数据库资源。它还提供了一个统一的异常层次结构,使开发者能够处理特定的技术异常。 #### 8. ...
JavaEE(Java Platform, Enterprise Edition),是Java平台的企业版,主要用于构建分布式、多层的企业级应用程序。它是一个开放标准,由Java社区进程(JCP)制定,Oracle公司作为主要维护者。JavaEE的核心是提供一组...
11.1.3 使用Abstract Factory模式的DAO模式 209 11.2 实现DAO模式 209 11.2.1 DAO接口和DAOBase类 210 11.2.2 EmployeeDAO类 213 11.2.3 EmployeeDAOMySQLImpl类 214 11.2.4 DAOFactory类 218 11.2.5 Employee...
例如,在创建控件时使用工厂模式,简化了代码并提高了可维护性。 #### 八、大数据日志处理 对于数以亿计的日志查询,可以采用以下几种策略: 1. **存储过程**:利用数据库中的存储过程来处理复杂的查询逻辑,提高...
Jeecms是基于Spring注解,在自定义标签时对于实体类和dao service等注意注解的问题。 五 自定义标签及使用自己创建的表的实现过程 下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_...