J2EE项目应用开发过程中的易错点
场景一
实体类型与数据库类型不一致,在进行条件查询过程中不走索引
分析
字段值类型和数据库定义的字段类型不一致时,MySQL
就会在内部做数据转化,
它的处理行为就会和我们期望的有些不一样,当我们使用整数来作为定义中的字符串字段做比较时,
MySQL
会自动将数据库中的记录转化为整数做比较,
而且将空值转化为整数0做比较,所以选出来的记录数多一些。
影响
- 建立的索引实际没有被用上,导致查询效率低下;
- 由于数据库对一些值的默认转化,导致查询的结果偏离实际的期望。
场景二
事务注解@Transactional
在非public
方法上
分析
spring
支持编程式和声明式事务管理两种方式。
@Transactional
是采用声明式事务管理,其建立在AOP
之上的。
其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional
注解的方式),便可以将事务规则应用到业务逻辑中。
虽然 @Transactional
注解可以作用于接口、接口方法、类以及类方法上,但是 Spring
建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。
@Transactional
注解应该只被应用到 public
方法上,这是由 Spring AOP
的本质决定的。
影响
在 protected、private
或者默认可见性的方法上使用 @Transactional
注解,这将被忽略,也不会抛出任何异常。
J2EE项目应用开发过程中的易错点的更多相关文章
- CentOS7中Tomcat的安装和配置以及启动配置tomcat。启动过程中的易错点
Tomcat运行需要设置JRE目录,全局变量配置,请参见: Linux下JDK的安装和配置 当然也可以直接修改Tomcat的配置文件,请自行度娘 1.下载并解压 请先去官网找到需要下载的tom ...
- java开发过程中,报错Dangling meta character '*' near index 0,解决办法
1.split方法转化字符串为数组: String[] strPicArr = map.get("hw_pic").toString().split("*"); ...
- Android开发过程中部分报错解决方法。
初学Android,最近在使用zxing开发一个条码扫描解析的安卓项目中,遇到以下几个问题.贴出来以供参考. 1.Http请求错误 Android4.0以上要求不能把网络请求的操作放在主线程里操 ...
- Android Studio项目/Flutter 案例中Gradle报错通用解决方案(包括Unable to tunnel through proxy问题)
目录 Step 1:修改Gradle版本为本地版本 Step 2:修改classpath为Android Studio版本 Step 3:关闭代理 Step 1:修改Gradle版本为本地版本 ...
- maven 项目在 tomcat 中启动报错:Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
问题原因: 在下载 maven 依赖包的时候出现某种原因导致下载的依赖包出现损坏,jvm 和 maven 不能正常识别,从而导致出现该问题. 解决办法: 在 maven 仓库中搜索: in-progr ...
- C# 四舍五入中一处易错点
,你没看错,四舍五入的结果 和我们期待的不太一样 Why?? 进入源码看下,注释中解释的很清楚.. 默认情况下,Math.Round()方法返回的是最接近的整数,这个没问题,问题是当要转换的数据在 两 ...
- SpringBoot入门项目CRM学习过程中的报错记录(更新ing)
在用mybatis自动生成实体类和mapper时报错..... is unrecognized or represents more than one time zone. You must conf ...
- J2EE在Web容器中启动报错:com.sun.jdi.InvocationException occurred invoking method.
我只是将Hibernate映射文件中的lazy属性有true改为lazy="false",即解决了上述问题.当然我之前也遇到一个问题是不调试时插入数据是不成功的,但是在Debug模 ...
- C#中ListView易错的方法
现在有一个ListView(lv1),有2列. ListViewItem lvi = new ListViewItem(); lvi.Text = "语文"; lvi.SubIte ...
随机推荐
- QQMusic绿钻兄,你可安好?我需要晴天。
不好意思,年纪这样大了,还依靠吐槽来保持呆毛的正能量,实在对不住,先说对不起. QQMusic是我最喜欢的腾讯增值服务,正版内容,海量歌手,高清下载.实在是音乐软件中高大上的典范,除了歌手排名中前十中 ...
- Redis的探究
之前大四时候实习的公司有使用过Redis,不过那时所有配置均由主管完成了,而我也只是处于能使用的阶段. 时隔1年多,近期回想起这货,在研究中,想把它整合进现在公司的网站系统中,做做数据快照(已完成)和 ...
- Altium Designer PCB 常用功能键
altium designer 5种走线模式的切换 : shift+space 方格与格点的切换:View-Grids-ToggleVisible Grid Kind源点:Edit-Origin-Se ...
- hdu 5585 Numbers【大数+同余定理】
Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- 转:并查集总结 例题:hdoj 1232 畅通工程
引述之类的就免了,我们现在做题碰到的并查集基础题目大都是连通城市(或者村庄学校),接下来我们就称每一个城市为一个元素.我们解决此类题目运用的是树结构,每个集合用一棵树表示,而树的节点用于存储集合中的元 ...
- [Objective-c 基础 - 2.5] NSString
1.NSString基本使用 使用%@占位符输出对象 ; ; NSString *str2 = [NSString stringWithFormat:@"My age is %d and n ...
- Reactive native 项目创建失败如何处理
首先感谢党的英明决策. 一开始我总觉得Awesomeproject这个名字是固定的,和我有同感的同学请举手. 其实我们可以起任意的名字,执行native react init碰到的最大的问题是 npm ...
- 10个Visual Studio原生开发调试技巧
10个Visual Studio原生开发调试技巧(1) 2013-05-29 13:30 佚名 开源中国 我要评论(1) 字号:T | T 以下的列表中你可以看到写原生开发的调试技巧(接着以前的文章来 ...
- 对PostgreSQL xmax的理解
xmax The identity (transaction ID) of the deleting transaction, or zero for an undeleted row version ...
- SCO连接SCOM报警
当SCOM中出现红色警报时,在目标计算机上运行一个程序: 1.新建Runbook,添加一个Monitor Alert 2.设置Monitor Alert属性,选择connection,设置警报过滤条件 ...