收录BUG

我不怎么喜欢写博,一是记录的文档保存在个人电脑足矣,二是我比较喜欢花时间看别人的分享。有一点强迫症。
{老实说我宁可开个达拉斯小牛队的专栏微信号233333333.}
这次开始收录一些遇到的比较典型的BUG,好久远的那些就不上了,不更新那我肯定是懒了。从这次毕设开始。
毕设弄的是朴实的WEB信息管理系统类别的,用S2SH框架搭,前端混有Echart和easyui的Demo。不求优越只求及格。
大问题基本没有遇到,因为用到的技术也比较low,一般到目前写设计充分的业务BUG率比较低了.

每一个BUG都加入自我分析点点。

1.关于openSession和getCurrentSession

先上一段百度的:

Spring 3.x 与Hibernate 4.x 整合遇到的问题,描述如下:
对数据库的 增加、删除、修改 操作需要Spring的事务支持,所以对service层的上述操作增加事务。applicationContext.xml配置如下:











由于Spring 3.x 对 Hibernate 4.x 不提供 HibernateDaoSupport,所以在dao的实现层注入SessionFactory,从而通过
Session session = sessionFactory.getCurrentSession();
来获得当前的session。applicationContext.xm中 sessionFactory的HibernateProperties增加以下属性:
org.springframework.orm.hibernate4.SpringSessionContext
注意:和Spring2.x不同,不能为thread,否则报错:org.hibernate.HibernateException: save is not valid without active transaction
OK,以上配置在 增加、删除、修改 操作时,都能正确执行,事务也正常执行!
当执行 查询 操作时,不需要事务的支持,代码如下:
public List getStudentList(String str)
{
  Session session = sessionFactory.getCurrentSession();
  List list = null;
  list = session.createQuery(str).list();
  return list;
}
问题来了,报错:org.hibernate.HibernateException: No Session found for current thread
问题解决:几乎所有正常的操作都必须在transcation.isActive()条件下才能执行。get,load,save, saveOrUpdate,list都属于这类!
建议:当方法不需要事务支持的时候,使用 Session session = sessionFactory.openSession()来获得Session对象,问题解决!

以上是百度里说得比较中肯的,关于opensession的使用,需要手动关闭,我会在尾部加上3条关闭语句(clean,flush,close都用上了,因为事务比较细,没察觉影响),这个在设置线程thread的时候也能跑起来,写法主要是获取到相应结果后用额外变量存储返回,这个是很重要的,和tx commit 抛异常处理的方式不太一样。

2.数据库和IDE里交互使用遇到的问题
Myeclipse中Hibernate逆向数据表时有设置表是否递增,而如果设置为navite,数据库UI工具那一开始生成表的时候要检查是否同样设置,否则两边冲突是不会报BUG的。而造成的可能是代码无错但是无法执行对数据库的操作。

3.关于Spring版本和Hibernate版本的问题
使用QBC更便于查询,抛却了查询语句,spring 3.x不支持hibernatedaosupport 所以用hql写DAO层貌似没有效果。获取的list会报空错误。

4.遍历List如果循环条件是List.size(),那么循环里使用remove会造成size动态变化,最后得出的条件遍历结果会因为列表数据的排列而不同。所以对遍历的环境条件要做好预判。

5.session里最好只存不需要变动的数据,比如修改个人信息的时候应访问数据库,而不是session。
关于这个其实自己写的时候也不怎么苟同,因为session这个东西确实得看情况来用。

6.JSP里使用strut2标签并实体化输入对象传给Action时候,注意写put get方法,并且方法put get名字后面貌似只能有一个大写开头。
(这个问题非常奇葩,但是确实存在)

7.从Action返回数据到JS里使用.

8.修改的方式.

9.关于系统使用角度的思考和设计。

10.注释和编程习惯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值