各位好, 想问下nutz中,Trans.close方法判断了只有count.get=0的时候才会真的关闭, 如果程序忘记配对使用了事物, 会导致关闭中未处理任何事情, 有什么好办法处理这种情况吗 另外,如果我把close方法改成主机关闭连接会有问题吗, 没提交的事物会回滚对吧
9 回复
手工控制事务,必须遵循下面的范式
Trans.begin(...);
try {
xxxxx
Trans.commit();
} catch (Exxxxxx e) {
Trans.rollback();
} finally {
Trans.close();
}
hello, 手工控制事物必须遵循上面的逻辑这个了解, 我是想基于nutz封装一个数据库操作的框架, 在事物控制上出现了问题, 一旦应用自己控制事物但是却没有配对使用begin和rollback commit操作, 这样会导致连接泄漏, 有什么办法可以在框架层避免这个问题吗 ? 曾经想过在框架层无条件调用Trans.get.close(), 这样连接关了但是trans没有设置为null, 下此在get的时候得到的是旧的tractation, 并且count+1, 仍然不能达到要求。 考虑在trans中增加一个方法无条件关闭conn并且trans设置为null 不知是否可以。
@thineagle 这不正在跟你讨论嘛...
我觉得应该加一个, 如果允许应用自由控制事物的话,一旦应用开发者没有配对使用或者程序的逻辑出现错误而导致特殊情况不能配对使用,就会出现连接泄漏,这个时候框架层却无能为力, 如果增加了这个方法, 框架在判断应用返回后仍然在事物中可以调用此方法并报警告,提醒应用检查程序。
@thineagle ok, 下一个版本加上. 报个issue吧
@wendal 收到。 这段时间出差了, 今天报个issue。
添加回复
请先登陆