服务层中,处理所有的业务逻辑,调用封装好的Dao;
1.在服务层,我们可以注入任何我们需要的接口;
2.在服务层中,我们可以创建任何我们在action中需要调用的方法;
3.在服务层中,我们可以对于所有可能出错的地方,进行判断,屏将异常向上抛出,注意不是处理异常;
4.在服务层中,如果可以的话,我们可以定义日志对象,每一步的操作,都设置到Logger中去;
5.在服务层,每一个服务层,我们尽量使用面向接口编程的思想;
6.在服务层,对于事务的处理,是我们在配置文件中进行的处理;
-----------------------------------------
添加数据时的考虑:
1. 确定对象的某个属性,是否在数据库中已经存在?方可进行添加操作
2. 注意添加数据对象时,对于字符串类型的对象属性,要是用trim()清空左右空格,方可执行步骤一中所述;
3. 如果添加的数据对象中含有两个日期字段,则在添加过程中,必须判断两个日期的大小,否则不能添加成功;
删除数据时的考虑:
1. 确定该对象的主键是否在其它的表中存在外键引用?从而决定采用彻底删除(级联删除)还是删除外键的提醒;
2. 该删除的操作,是真正的从数据库中删除数据,还是在数据库中的某列进行删除标示 ;
更新数据时的考虑:
1. 数据的更新,如果在数据表中存在设定日期列,则判定是否该列已经进行当前日期的设定;
2. 是否进行级联更新操作
查询数据时的考虑:
1. 注意查询的条件和分页的实现;
2. 如果根据指定的日期时间段查询则应进行如下设定:
if(newsTypeId!=null&&newsTypeId!=0){ detachedCriteria.add(Restrictions.eq("newsTypeId", newsTypeId)); } if(begin_time!=null && !begin_time.equals("")){ detachedCriteria.add(Restrictions.ge("newsAddTime", begin_time)); } if(end_time!=null && !end_time.equals("")){ detachedCriteria.add(Restrictions.le("newsAddTime", end_time)); } |