如下一段获取数据代码的问题:

public Serializable getById(Serializable id) throws BaseBusinessException {
  if (id == null)
   throw new BaseBusinessException("根据给出的Id获得对象时,ID不得为空!");
  try {
   return basicDAO.findById(id);

} catch (BaseDBException e) {
   log.error("根据给出的Id获得对象:" + getObjectName() + "失败");
   e.printStackTrace();
   throw new BaseBusinessException(e.getMessage());
   // }
  }
 }

问题:

问题1: e.printStackTrace();  会造成有一部分日志不在控制范围内,

应该这样写

log.error("根据给出的Id获得对象:" + getObjectName() + "失败",e);

问题2:   throw new BaseBusinessException(e.getMessage());

这种方法直接抛出异常到界面,会非常不友好

对于一种get数据的方法,应该将这些异常捕获,用log.erro打印到后台,前端返回null即可

改良1 :  可采用标注型事务

原来我们都是采用 前缀控制的 声明式事务,这种方法对方法名有所限制,而且不太灵活

可以采用标注型控制,在方法上加上  @Transactional 即可

@Transactional
 public Serializable getById(Serializable id) throws BaseBusinessException

改善后的代码

@Transactional
 public Serializable getById(Serializable id) throws BaseBusinessException {
  if (id == null)
   throw new BaseBusinessException("根据给出的Id获得对象时,ID不得为空!");
  try {
   return basicDAO.findById(id);

} catch (BaseDBException e) {
   log.error("根据给出的Id获得对象:" + getObjectName() + "失败", e);
   //e.printStackTrace();
   //throw new BaseBusinessException(e.getMessage());
   // }
  }
  return null;
 }

最新文章

  1. Swift_String的操作
  2. ASP.NET Web API中的Controller
  3. Wampserver主机服务配置方法
  4. CocoStudio基础教程(5)使用CocoStudio场景编辑器关联组件
  5. ArcGIS Engine Style文件操作
  6. Java开发者易犯错误Top10
  7. [转]Hibernate映射的基本操作
  8. OpenCV探索之路(八):重映射与仿射变换
  9. Python强大的可变参数传递机制
  10. php 与mysql 数据库
  11. spring cloud config客户端
  12. HTML for android 移动小球
  13. 算法初级面试题05——哈希函数/表、生成多个哈希函数、哈希扩容、利用哈希分流找出大文件的重复内容、设计RandomPool结构、布隆过滤器、一致性哈希、并查集、岛问题
  14. Win7 默认.lnk打开方式全是别的程序 还原的办法
  15. 1037 Magic Coupon (25 分)
  16. 在 R 中使用 Python 字符串函数
  17. linux 安装python
  18. css3中-moz、-ms、-webkit分别代表的意思
  19. HttpClient远程调用接口
  20. ios 6.0模拟器页面调出pop窗口消失后无法使用键盘

热门文章

  1. logging.basicConfig参数简介
  2. GPIO模拟SPI
  3. Spring源码解析(四)Bean的实例化和依赖注入
  4. Spring源码解析(五)循环依赖问题
  5. [Axiom 3D]2.Axiom 基本概念
  6. PHP对象转数组
  7. Winform 下使用WebBrowser的HTML编辑控件—WinHtmlControl 在win7 IE9下的问题
  8. vs2010中如何编写C语言程序
  9. MapReduce: map读取文件的过程
  10. Sybase IQ使用过程中注意事项