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

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;
 }

今天廷鹏师弟来的java建议的更多相关文章

  1. 2015第16周六学习java建议

    学习Java 建议: 尽量用 google 查找技术资料. 有问题在 stackoverflow 找找,大部分都已经有人回答. 多看官方的技术文档. ibm developerworkers 的文章质 ...

  2. 振鹏同学正式学习java的第一天!

    一.今日收获 1.最棒的莫过于运行Java的HelloWorld! 2.在同学的帮助下历经坎坷困苦安装完成了Eclipse软件并设置好环境变量. 3.最最最开始了解了Java的前世今生,编程语言发展的 ...

  3. java超市购物管理系统

    一.概述 1.鹏哥前面有写过java项目超市管理系统项目,传送门 2.收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思想练习,但是没有涉及到java如 ...

  4. Java的常用对象①②

    Java的常用对象① Java的常用对象有很多,这里只对lang包中常用的Object,Date(Calendar,DateFormat,Math),System,Runtime进行介绍.㈠Objec ...

  5. Java Annotation认知(包括框架图、详细介绍、示例说明)

    摘要 Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚 ...

  6. 20145317彭垚 《Java程序设计》第一次实验实验报告

    20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...

  7. 20145218 《Java程序设计》第05次实验报告

    北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验名称:Java网络编程及安全 一.实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使 ...

  8. PHP开发人员对JAVA的WEB开发入门(初版-已废弃)

    最近准备对其他部门PHP开发的童鞋做一个对JAVA的培训.知己知彼,百战不殆,我要先了解点PHP,才能确认他们的基础,达到好的授课效果. PHP(原始为Personal Home Page的缩写,后正 ...

  9. Java 多态、内部类、异常、包

    一.多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态. 例如: 动物中的猫和狗. 猫这个对象对应的是猫类型,例如:猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为 ...

随机推荐

  1. (windows下)tomcat优化--内存,并发.缓存三方面优化

    一.内存 注: jdk1.8中废弃了-XX:PermSize和-XX:MaxPermSize的持久态(存放常量.静态变量区)配置, 多了一个元数据区(Metadata Space:默认为内存的0.2% ...

  2. saltstack master minion 配置文件

    Master端的配置是修改/etc/salt下master配置文件.以下是Master端常用的配置. interface: 指定bind 的地址(默认为0.0.0.0) publish_port: 指 ...

  3. SQL Server简洁查询正在运行SQL(等待事件)

    通常我们可以使用 sp_who2 我们希望更加简洁的信息,下面这个查询使用系统表sys.sysprocesses,以及sys.dm_exec_sql_text做OUTER APPLY. T-SQL是这 ...

  4. ftp文件上传和下载

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  5. java 多线程 day18 ThreadPoolExecutor

    http://blog.csdn.net/lipc_/article/details/52025993 https://www.cnblogs.com/trust-freedom/p/6681948. ...

  6. httpclient接口测试完整用例以及获取信息的方法

    原文地址https://blog.csdn.net/fhaohaizi/article/details/78088075 原文地址https://blog.csdn.net/fhaohaizi/art ...

  7. docker——三剑客之Docker Machine

    Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境.它支持多种平台,让用户在很短时间内搭建一套Docker主机集群. Ma ...

  8. C# Winform backgroundWorker组件使用

    BackgroundWorker 组件用来执行诸如数据库事务.文件下载等耗时的异步操作. 开始 在应用程序中添加一个BackgroundWorker实例,如果用的是VS,可以从工具上直接拖到应用程序: ...

  9. 关于eval 与new Function 到底该选哪个?

    废话不多说,直接上测试代码 复制代码 代码如下: var aa = "{name:'cola',item:[{age:11},{age:22},{age:23},{age:23}]}&quo ...

  10. http之工作原理

    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包含请求的方法.URL. ...