|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不得不提一下的是:.net是看到java红,而开发出来的工具。
成绩:客户在其数据库操纵过程当中必要挪用我们的事情流接口,如许就必要将我们的事情流操纵与他们的业 务操纵置于统一个事件中。我们的服务接纳的都是spring的声明式事件,而客户接纳的是对connection举行事件处置。
怎样包管JDBC事件的分歧性?
想到的办理计划一:利用jta事件,用tomcat+jotm供应事件办理器。为何一入手下手就想到要利用jta事务??实践上我们和客户都是利用的统一个数据库,为了便利,各自利用了分歧的数据库毗连体例,利用jta的话的确有bt的意义在内里。可是现实上是我们的第一反响都是jta。最初没有接纳该办法的缘故原由也很复杂:我未将jotm设置乐成!汗一个。
想到的办理计划二:将客户的这些特定代码用spring办理起来。由于要修正客户部分代码,这个计划遭到了客户的激烈否决。因而保持。
想到的办理计划三:客户数据库操纵与我们的服务利用统一个数据库毗连。然后编程处置事件。存在两种体例:一种是把客户的毗连传给我们,另外一种则是把我们的毗连传给客户。第一种体例对我们的影响太年夜,以是最初决意接纳后一种体例:从hibernatesession中猎取connection然后传送给客户。接上去检察一下HibernateTemplate的execute()办法,思绪就很复杂了:猎取界说的sessionFactory-->创立一个新的session并翻开-->将session与以后线程绑定-->给客户代码前往connection-->翻开事务-->客户利用我们传送的connection举行数据库操纵-->我们不带声明事件的服务操纵-->提交事件-->排除绑定。
JDBC事件实践要注重的中央是:
1、将session与以后线程绑定利用的TransactionSynchronizationManager.bindResource()办法,这样在HibernateTemplate里才干找到session;
2、我们的服务必定要把声明式事件完全干失落,不然会有commit;
3、我们服务挪用终了后必定要flushsession,不然客户代码不会感知数据库里的数据变更。
终极办理:利用了spring里经常使用的模板和回调。JDBC事件代码以下:挪用伪代码: - public void methodA(){
- TransactionTemplate transactionTemplate=new TransactionTemplate();
- transactionTemplate.execute(new TransactionCallback(){
- public Object doInTransaction(Connection conn) {
- //客户代码
- client.method1("1");
- //我们代码 间接利用
- our.method2();
- //客户代码
- client.method3("l");
- return null;
- }
- });
- }
复制代码 大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。 |
|