- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取剖析
SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取
我们搭建好了Struts2、Hibernate和Spring的开发环境,并成功将它们整合在一起。这节主要完成一些基本的增删改查以及Service、Dao和Action的抽取。
1. Service层的抽取
上一节中,我们在service层简单写了save和update方法,这里我们开始完善该部分的代码,然后对service层的代码进行抽取。
1.1 完善CategoryService层
对数据库的操作无非是增删改查,首先我们来完善CategoryService层的接口和实现:
//CategoryService接口
public interface CategoryService extends BaseServiceCategory {
public void save(Category category); //插入
public void update(Category category);//更新
public void delete(int id); //删除
public Category get(int id); //获取一个Category
public ListCategory query(); //获取全部Category
}
对CategoryService接口的具体实现:
public class CategoryServiceImpl extends BaseServiceImplCategory implements CategoryService {
private SessionFactory sessionFactory;
//Spring会注进来
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Session getSession() {
//从当前线程获取session,如果没有则创建一个新的session
return sessionFactory.getCurrentSession();
}
@Override
public void save(Category category) {
getSession().save(category);
}
@Override
public void update(Category category) {
getSession().update(category);
}
@Override
public void delete(int id) {
/*第一种方法有个弊端,就是没删除一次得先查询一次
Object obj = getSession().get(Category.class, id);
if(obj != null) {
getSession().delete(obj);
}*/
String hql = delete Category while id=:id;
getSession().createQuery(hql) //
.setInteger(id, id) //
.executeUpdate();
}
@Override
public Category get(int id) {
return (Category) getSession().get(Category.class, id);
}
@Override
public ListCategory query() {
String hql = from Category;
return getSession().createQuery(hql).list();
}
}
1.2 Service层抽取实现
完成了CategoryService后,我们来抽取Service层的基础实现。思路是这样的:我们抽取一个基础接口BaseService以及基础接口的实现BaseServiceImpl,后面开发的时候,如果需要新的Service,只需要做两步即可:首先定义一个新的接口xxxService继承BaseService接口,这个接口可以增加新的抽象方法;然后定义一个新的实现类xxxServiceImpl继承BaseServiceImpl并实现xxxService接口即可。这样更加便于项目的维护。
我们先根据上面的CategoryService接口来创建BaseService接口:
//基础接口BaseService,使用泛型
public
文档评论(0)