dao、service心得 ;页面radio获取值问题;事务、批处理的区别

1、首先说一下对三层框架中dao、service的最新心得:

   以前不管是写dao层还是service层,我肯定写的方法都是一样的,也就是service接口层的方法与dao接口层的方法肯定都是一样的,但是最近才发现这个问题的严重性,在做项目的时候没有分清业务逻辑关系,比如用户跟组织还有用户组织关联三张表,在编写用户功能时肯定要获取组织相关信息,一开始在UserController中我将UserService跟OrganizeService全都写了进去,只要是用户管理需要用到的方法我全都写到了UserController中,可是项目组开会的时候经理提醒了我们很重要的一点那就是业务逻辑一定要分清楚,是谁的功能谁做,比如在人员管理界面需要获取组织列表,那我就交给组织层去完成,而不是都在人员层都完成,而且Controller中最好就一条处理语句,其它的都尽量放到service或dao中完成,我感觉这就是我感触最深的地方,以后要提醒自己以后多注意这一点,条理理清楚了,不仅代码简洁,而且还利于维护,我觉得这就是我这个做项目一个很重要的收获吧。

2、再说说页面radio获取值问题:

      在做人员管理的时候,页面有两个Modal,分别用于添加跟修改用户,在每个Modal中都有性别的两个radio,一开始添加用户的时候总是获取不到radio的值,更奇怪的是修改用户的时候却可以,查看了id和name属性跟页面其它元素也没有冲突,最终在同事的帮助下找到了问题的根源,我在添加用户弹出添加对话框即$('#editModal').modal('show');之前有一个清空表单的操作,$("#addUserForm").find('input').val('');,去掉这句后就可以获取到radio的值了,如果非要清空表单值的话将其改成$("#addUserForm").find('input[type=text]').val('');,即只清楚text文本框的值,select或radio的值另设。

3、事务、批处理的区别:

在做信息管理的时候有时候可能要用到事务或批处理操作,之前用到的不多,概念也一直很模糊,在这了解了一下:

      事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功,有可能操作多张表,是线程安全的,多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。在项目中使用事务,可以使用@Transactional标记,也可以手动编写事务,步骤如下:

JdbcUtils.beginTransaction();
try {
JdbcUtils.commitTransaction();
} catch (Exception e) {
JdbcUtils.rollbackTransaction();
}

     批处理:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率,但是自己不会回滚,也就是如果有操作失败的记录也不会自动会滚,如要会滚需要将其放到事务中。

  实现批处理的两种方式:(1)、Statement.addBatch(sql);虽然可以向数据库发送多条不同的sql语句,但是sql语句没有预编译,当向数据库发送多条语句相同,但仅参数不同的sql语句时,需重复写上很多条sql语句。

(2)PreparedStatement.addBatch(),比一种方式好的地方在于发送的是预编译后的SQL语句,执行效率高,但是只能应用在sql语句相同,但参数不同的批处理中,因此经常用于在同一个表中批量插入数据,或批量更新表的数据。

 

posted @ 2012-12-26 15:11  风儿飞  阅读(532)  评论(0编辑  收藏  举报