那里的许多示例都主张对数据库事务进行显式回滚,具体方法如下:
using (var transaction = ...)
{
try
{
// do some reading and/or writing here
transaction.Commit();
}
catch (SqlException ex)
{
// explicit rollback
transaction.Rollback();
}
}
但是,我倾向于这样做:
using (var transaction = ...)
{
// do some reading and/or writing here
transaction.Commit();
}
当发生异常时,我只是依靠未提交事务的隐式回滚。
依靠这种隐式行为有什么问题吗?有人有令人信服的理由为什么我不应该这样做吗?
不,它不是特别需要的,但是我可以想到两个可能是个好主意的原因:
有人可能会争辩说使用transaction.Rollback()
可以更清楚地表明在什么情况下不会进行交易。
在处理事务时,重要的是要意识到某些锁定仅在事务回滚或提交时才被释放。如果您正在使用该using
语句,则在处理该事务时将回滚该事务,但是如果由于某种原因您需要在using
块内进行一些错误处理,则在回滚之前删除该事务(删除锁)可能会比较有利。执行复杂/耗时的错误处理。
问题内容: 我有两个线程,我想确保我在LinkedBlockingQueue上正确进行了同步。这正确吗?还是不需要在(messageToCommsQueue)上进行显式同步? 宣言: 方法一: 方法二: 问题答案: 是的,没有必要。JavaDoc说: BlockingQueue实现是线程安全的。
我对Web的使用有点困惑.xml在Spring编写REST服务时使用泽西岛框架。在我看来,如果我使用注释来定义路径,为什么我们需要web.xml?我最近刚刚使用在线参考文档开发了Spring Boot应用程序,他们甚至没有提到web.xml。那么,说Spring已经删除了web.xml并用注释代替它是对的吗?(例如@Path、@Get、@Post)。我在同一行的第二个问题是,如果我没有web.xm
对于每个客户机,我们自然需要发送关于事务的反馈(OK或Exception->rollback)。 我的问题是:如果我使用,是否意味着只使用一个事务,如果第100个客户机遇到问题,第1个客户机的事务也会回滚?
问题内容: 我了解jsonp是一种绕过相同原始政策的技术。基本上,您在脚本标签中引用json服务服务器端点,因为脚本标签不受SO策略的限制。 我的问题是:假设服务器具有一个为json提供服务的终结点,是否需要对服务器进行任何修改才能在客户端中使用jsonp? 我想不,但是想确定。 问题答案: 是的,JSONP呈现时略有不同,因此您的服务器需要支持它。 JSON看起来像这样: JSONP看起来像这样
问题内容: 最近,我碰上了这篇文章如何写在Node.js的一个单 我知道以下 状态的文档: 第一次加载模块后将对其进行缓存。多次调用可能不会导致模块代码多次执行。 因此,似乎每个需要的模块都可以轻松地用作单例,而无需单例样板代码。 题: 上面的文章是否提供了有关创建单例的解决方案? 问题答案: 这基本上与nodejs缓存有关。干净利落。 https://nodejs.org/api/modules
随着新的工具栏小部件的引入和AppCompat(android.support.v7.widget.Toolbar)版本的推出,是否还需要调用setSupportActionbar(工具栏)?或者调用setSupportActionbar有什么好处吗;现在我们可以设置标题、子标题、导航图标、导航图标单击侦听器(getSupportActionBar()。直接在工具栏上设置DisplayHomeAs