java数据库中存在事务的概念,最经典的例子的就是转账,张三给李四转账,那么首先要扣除内张三的钱,然后加容给李四,这整个过程不能分开操作,整个过程称为事务,那么如果现在张三扣除了钱,在转账给李四之前出现了异常,那么问题来了,现在转账动作做到一半,如果不回滚事务的话,那么就出现张三钱少了,但是李四没加钱,这是不允许的,所以出现了回滚事务的这一动作。这样好理解些么?
② Java编程请解释一下,业务逻辑概念和事务逻辑概念,两者又有什么关系和区别
所谓逻辑业务就是如何把数据层的代码结合在一起,从而实现需要的功能
事务逻辑概念:事务处理点和数据访问点
③ java在用ssh做项目的时候,不是说增,删,改必须要加事务吗
执行当然可以了。
你首先要明白事务是干什么的。
事务是把一系列的操作当做一个事务,当某个步骤失败时,就将所有操作回滚,所有操作都成功就提交。比如算费用的,你付钱给我,就要把你的账户的钱减掉一笔,再在我的账户下把钱加上一笔。这必须做成一个事务,要不在减你的钱的时候出问题,比如网络故障,你的钱少了,但是我的钱没加,这样就出问题了。
你说的增删改,只是对一个表的操作。不写在事务里也行,当对多个表操作时,最好用在事务里。
而且SPRING做事务 也很简单。
手打,主啊 给点分吧
④ java事务和锁的问题,如果事务没提交,其他线程能修改数据库中的同条数据吗
题主,你说的这种情况是允许出现的。这与事务的隔离程度有关。
如果事务隔离程度设置得当,就没有必要显式的通过synchronized保护资源(除非资源是某个service中的公共属性)。
⑤ 1spring的事务是什么与数据库的事务是否一样
本质上其实是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库内,假如数据库不支持容事务的话,spring的事务是没有作用的.数据库的事务说简单就只有开启,回滚和关闭,spring对数据库事务的包装,原理就是拿一个数据连接,根据spring的事务配置,操作这个数据连接对数据库进行事务开启,回滚或关闭操作.但是spring除了实现这些,还配合spring的传播行为对事务进行了更广泛的管理.其实这里还有个重要的点,那就是事务中涉及的隔离级别,以及spring如何对数据库的隔离级别进行封装.事务与隔离级别放在一起理解会更好些.以上回答希望能帮助到你.
⑥ 怎么理解java中的业务逻辑层,数据访问层,表示层
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。(负责展示而已)
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。(关键在于由原始数据抽象出逻辑数据)能够提供interface\API层次上所有的功能。,“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来,形成一种业务规则
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。(关键在于粒度的把握)要保证“数据访问层”的中的函数功能的原子性!即最小性和不可再分。“数据访问层”只管负责存储或读取数据就可以了。
多写写项目,多了解项目结构大概就能知道这样的好处了
⑦ java 什么情况下需要事务
Java事务控制是构建J2EE应用不可缺少的一部分,合理选择应用何种事务对整个应用系统来说至关重要。一般说来,在单个JDBC 连接连接的情况下可以选择JDBC事务,在跨多个连接或者数据库情况下,需要选择使用JTA事务,如果用到了EJB,则可以考虑使用EJB容器事务。
⑧ 事务的提交和回滚是什么意思 Java
一组业务整体处理的行为叫一个事务。这一组的业务都能成功处理,我们就可以把这个事务提交来保存你已做的行为结果。但如果一组中有任何的差错出现的话,我们就认为这事务不成功,需要回滚来撤消之前的操作。举例:你去银行转账,转账我们有两步吧,从你账户中取出钱再往他账户中加钱。那这两步银行是必须要确保正确无误的进行的。要被看做成一个事务。其中任何一步出错就算是转账失败,但可能你这时是已经从你账户中扣了钱了,又没往他账户里加钱?怎么办算了?你不肯吧。所以银行会事务回滚,不保存你刚才的操作,即恢复到你没转账之前的状态。累啊
⑨ java中的事务到底怎么理解举个实际的例子
比如说你去银行转账,将将 A 账户中的金额转到B账户。
A 语句:update Table set amount = amount - 100 where id = 'A'"
B语句:update Table set amount = amount + 100 where id = 'B'"
会有两条update语句,如果不专用事务处理的属话,在A语句执行完之后,在执行B语句的时候出错,那么A账户的金额减少了,B账户的金额却没有增加,这就有问题了
所以要用到事务来控制,如果B语句出现错误,就将事务回滚,A账户的金额也不会减少。
如果A。B都执行成功,事务提交
简单来说就是所有在事务中的语句必须全部执行成功,事务才会提交,如果有一条执行失败,事务就会回滚。
⑩ java事务相关
Java中的事务处理
一般情况下,J2EE应用服务器支持JDBC事务、JTA(JavaTransactionAPI)事务、容器管理事务。一般情况下,最好不要在程序中同时使用上述三种事务类型,比如在JTA事务中嵌套JDBC事务。第二方面,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面我们列举两种事务处理方式。
1、JavaBean中使用JDBC方式进行事务处理
在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。
publicintdelete(intsID){
dbc=newDataBaseConnection();
Connectioncon=dbc.getConnection();
try{
con.setAutoCommit(false);//更改JDBC事务的默认提交方式
dbc.executeUpdate("deletefrombylawwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_contentwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_affixwherebylawid="+sID);
con.commit();//提交JDBC事务
con.setAutoCommit(true);//恢复JDBC事务的默认提交方式
dbc.close();
return1;
}
catch(Exceptionexc){
con.rollBack();//回滚JDBC事务
exc.printStackTrace();
dbc.close();
return-1;
}
}
2、SessionBean中的JTA事务
JTA是事务服务的J2EE解决方案。本质上,它是描述事务接口(比如UserTransaction接口,开发人员直接使用该接口或者通过J2EE容器使用该接口来确保业务逻辑能够可靠地运行)的J2EE模型的一部分。JTA具有的三个主要的接口分别是UserTransaction接口、TransactionManager接口和Transaction接口。这些接口共享公共的事务操作,例如commit()和rollback(),但是也包含特殊的事务操作,例如suspend(),resume()和enlist(),它们只出现在特定的接口上,以便在实现中允许一定程度的访问控制。例如,UserTransaction能够执行事务划分和基本的事务操作,而TransactionManager能够执行上下文管理。
应用程序可以调用UserTransaction.begin()方法开始一个事务,该事务与应用程序正在其中运行的当前线程相关联。底层的事务管理器实际处理线程与事务之间的关联。UserTransaction.commit()方法终止与当前线程关联的事务。UserTransaction.rollback()方法将放弃与当前线程关联的当前事务。
publicintdelete(intsID){
DataBaseConnectiondbc=null;
dbc=newDataBaseConnection();
dbc.getConnection();
UserTransactiontransaction=sessionContext.getUserTransaction();//获得JTA事务
try{
transaction.begin();//开始JTA事务
dbc.executeUpdate("deletefrombylawwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_contentwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_affixwherebylawid="+sID);
transaction.commit();//提交JTA事务
dbc.close();
return1;
}
catch(Exceptionexc){
try{
transaction.rollback();//JTA事务回滚
}
catch(Exceptionex){
//JTA事务回滚出错处理
ex.printStackTrace();
}
exc.printStackTrace();
dbc.close();
return-1;
}
}