最近看了springside的CRUD设计实现,心里有点感触,随即改写了一点内容,希望大家给点意见!
以下是springside的Hibernate的DAO设计:
public class HibernateGenericDao extends HibernateDaoSupport {
public <T> T get(Class<T> entityClass, Serializable id) {}
public <T> List<T> getAll(Class<T> entityClass) {}
public <T> List<T> getAll(Class<T> entityClass, String orderBy, boolean isAsc) {}
......
}
public class HibernateEntityDao<T> extends HibernateGenericDao implements EntityDao<T> {
protected Class<T> entityClass;
public HibernateEntityDao() {
entityClass = GenericsUtils.getSuperClassGenricType(getClass());
}
......
}
业务类通过以下方式来调用:
@Service
@Transactional
public class DepotService extends HibernateEntityDao<Depot> implements IDepotService {
@Autowired
public DepotService(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
业务方法调用......
}
考虑以上做法每个业务类都要继承于HibernateEntityDao,而且每个业务类只能处理一个PO类,如果想要处理多个PO,需要再传入class。
经改造后,只留HibernateGenericDao类,代码如下:
public interface IHibernateGenericDao {
<T> T get(Class<T> entityClass, Serializable id);
<T> List<T> getAll(Class<T> entityClass);
void save(Object o);
List find(String hql, Object... values);
void update(Object object);
void remove(Object o);
}
@Service
@SuppressWarnings("unchecked")
public class HibernateGenericDao extends HibernateDaoSupport implements IHibernateGenericDao {
@Autowired
public HibernateGenericDao(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
public <T> T get(Class<T> entityClass, Serializable id) {}
public <T> List<T> getAll(Class<T> entityClass) {}
public <T> List<T> getAll(Class<T> entityClass, String orderBy, boolean isAsc) {}
......
}
修改后,业务类通过以下方式来调用:
@Service
@Transactional
public class DepotService implements IDepotService {
@Autowired
private IHibernateGenericDao dao;
public void add(Depot depot){
dao.save(depot);
}
public Depot get(int id){
return dao.get(Depot.class, id);
}
public List<Depot> find(){
String hql = "from Depot";
Object[] values = new Object[]{};
return dao.find(hql, values);
}
}
这样修改的好处:
1、只需@Autowired注入业务类使用即可;
2、可以直接处理多个PO,而不用再传入class
不明白springside为什么要那样设计,麻烦不说主要还不方便,尽管在应用中业务处理单个PO的时候还是比较多的!还是希望大家多多讨论,哈哈!
分享到:
相关推荐
该项目是一个基于Hibernate3框架的CRUD设计源码,涵盖32个文件,包括14个Java源文件、9个XML配置文件、8个SQL脚本以及1个Git忽略文件。它实现了包括一对一、一对多、多对一、多对多关系在内的复杂关系关联,适用于...
**基于JPA的CRUD操作详解** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它为开发者提供了一种声明式的方式来处理对象与数据库之间的映射,简化了数据库操作。在这...
在"SpringMVC+Hibernate +MySql+ EasyUI实现CRUD"的项目中,开发流程大致如下: 1. **数据库设计**:首先,你需要使用MySql创建数据库和对应的表结构,定义好各字段类型和约束。 2. **实体类创建**:基于数据库表...
Struts 2是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架,用于简化Java Servlet和JSP的开发。在本示例中,Struts 2的作用包括: 1. **请求调度**:处理HTTP请求并分派到相应的Action,Action负责业务逻辑...
Struts2是一个基于MVC(Model-View-Controller)架构模式的Java Web开发框架,而Hibernate则是一个对象关系映射(ORM)工具,用于简化数据库操作。 **Struts2框架详解** Struts2作为ActionServlet的替代品,它提供...
本项目是基于Hibernate开发的持久层增强工具包设计源码,主要使用Java进行开发。项目共包含103个文件,其中Java源代码文件90个,Java虚拟机文件7个,XML配置文件2个,Git忽略配置文件1个,项目许可证文件1个,...
【Spring4-Struts2-Hibernate4 CRUD Demo_5】是一个综合性的开发示例,它展示了如何在Java Web应用程序中整合三大主流框架:Spring 4、Struts2和Hibernate4,进行基本的数据创建(Create)、读取(Read)、更新...
**基于Hibernate的BaseDAO** 在Java企业级开发中,数据访问层(DAO,Data Access Object)是连接业务逻辑层和数据库的重要桥梁。BaseDAO是一种通用的设计模式,它封装了Hibernate框架的基本操作,使得业务逻辑层...
"基于Hibernate的进销存管理系统的设计与实现" 本文系基于 Hibernate 的进销存管理系统的设计与实现,旨在解决传统的手工管理模式不能适应时代发展的局限性。该系统主要功能包括药品分类管理、药品管理、入库管理、...
Struts2是一个基于MVC设计模式的Java Web框架,它提供了一种用于构建可维护性和可扩展性高的应用程序的方式。在本示例中,Struts2负责接收用户请求,解析HTTP参数,调用业务逻辑(由Spring4管理的服务),并最终将...
Struts2是基于MVC(Model-View-Controller)设计模式的开源Web应用框架,用于简化Java Web应用的开发。它提供了强大的请求处理机制、类型转换、异常处理以及强大的国际化支持。在这个项目中,Struts2负责接收用户的...
在基于Hibernate的系统中,文件上传通常涉及到以下几个关键步骤: 1. **实体类设计**:首先,我们需要创建一个表示文件的实体类,包括文件名、文件类型、上传时间、大小等属性。此外,如果要实现评论功能,还需要...
在本示例中,我们探讨的是一个基于Spring 3.2和Hibernate 4的完整CRUD(创建、读取、更新、删除)操作演示。这个压缩包文件包含了实现这一功能所需的全部资源,让我们深入理解如何将这两个强大的Java框架集成到实际...
【基于Hibernate和Struts2的项目源码】是Java Web开发中的一个典型示例,它结合了两个重要的框架——Hibernate作为持久层框架,Struts2作为控制层框架,以实现高效、灵活的数据管理和用户交互。这个项目源码提供了一...
Struts 2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它极大地简化了Java Web应用的开发。在CRUD操作中,Struts 2处理HTTP请求,调用相应的Action,然后根据结果返回对应的视图。它的拦截器机制...
【标题】"基于Struts2+Spring2+Hibernate3的CRUD(附源代码)" 描述了一种常见的Java Web开发框架组合,用于实现创建、读取、更新和删除(CRUD)操作。这个项目结合了Struts2作为MVC框架,Spring2负责依赖注入和事务...
【基于Hibernate实现的学生选课系统】是一个典型的Java Web应用程序,主要目标是利用Hibernate这一强大的对象关系映射(ORM)框架来简化数据库操作,为初学者提供一个实践平台。Hibernate允许开发者将业务对象与...
【标题】基于Hibernate的Java对象持久化技术在农户征信管理平台设计中的应用 【内容详解】 在现代软件开发中,数据库管理和数据持久化是至关重要的环节。Hibernate作为一款优秀的Java对象关系映射(ORM)框架,极...
本项目"struts+hibernate基于购物车的功能小demo"是一个实用的学习资源,旨在帮助初学者理解并实践这两种技术的结合。 **Struts框架**是MVC(Model-View-Controller)设计模式的一种实现,主要用于控制应用程序的...
**Struts2** 是一个基于MVC设计模式的Web应用框架,用于简化Java EE应用的开发。在本示例中,Struts2作为前端控制器,接收来自用户的HTTP请求,根据配置的Action映射将请求转发给后端的业务逻辑处理。Struts2还提供...