Java 会话(session)和 事务

会话(session)和事务的区别

一个session可以启动多个事务,session指一次连接。一个session中可以完成多个事务。

一个事务 是指一个操作单元,要么成功,要么失败,没有中间状态。

会话,在应用程序中连接数据库要执行连接,然后会关闭,这算一次会话。

事务呢,就好比在打开会话后要执行程序中的某一个或多个对数据库进行的操作。

session怎么创建关闭,及其对性能的影响

开启了事务之后,Session会一直占用一个连接,所以一个http请求对应一个Session会降低数据库的并发性能,应该怎么解决?

一个好的办法是交给Spring去管理。下面给出一个例子:

表现层: 

假如页面上有一个Button用于调用应用层的转账服务: 

应用层: 

public void TransferAccountService(int id1,int id2) { 
    ITransaction tx =  _session.BeginTransaction();   //开始事务 
    Account a1 = session.Get<Account>(id1); 
    Account a2 = session.Get<Account>(id2); 
   //由于业务逻辑很慢,但是已经开始了事务, 
   //有一个数据库连接会被始终被占用。导致数据库的并发性能很低 
    LogicTransferAccount(a1,a2) 
    otherFunc(); 
    tx.Commit();   //提交事务,为了简单,先不考虑回滚事务的情况。 
} 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clark Kent 2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值