﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-马可波罗的梦乡-随笔分类-Spring</title><link>http://www.blogjava.net/thinke365/category/41173.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 28 Aug 2009 14:23:01 GMT</lastBuildDate><pubDate>Fri, 28 Aug 2009 14:23:01 GMT</pubDate><ttl>60</ttl><item><title>Spring执行环境</title><link>http://www.blogjava.net/thinke365/archive/2009/08/27/292738.html</link><dc:creator>梦回唐朝</dc:creator><author>梦回唐朝</author><pubDate>Wed, 26 Aug 2009 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/thinke365/archive/2009/08/27/292738.html</guid><wfw:comment>http://www.blogjava.net/thinke365/comments/292738.html</wfw:comment><comments>http://www.blogjava.net/thinke365/archive/2009/08/27/292738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/thinke365/comments/commentRss/292738.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/thinke365/services/trackbacks/292738.html</trackback:ping><description><![CDATA[可以把Spring配置成Listener，它在Filter启动之前就已经加载。<br />
<br />
eclipse异常退出，在Navigator视图看不到项目了，重新导一次项目就可以了。<br />
重新编译没有用，说是找不到一个jar里的某个类，把这个类从编译路径删除，再加入，代码会重新编译，之后发现没有错误提示了。<br />
<br />
<img src ="http://www.blogjava.net/thinke365/aggbug/292738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/thinke365/" target="_blank">梦回唐朝</a> 2009-08-27 00:37 <a href="http://www.blogjava.net/thinke365/archive/2009/08/27/292738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>事务管理</title><link>http://www.blogjava.net/thinke365/archive/2009/08/05/289887.html</link><dc:creator>梦回唐朝</dc:creator><author>梦回唐朝</author><pubDate>Tue, 04 Aug 2009 19:37:00 GMT</pubDate><guid>http://www.blogjava.net/thinke365/archive/2009/08/05/289887.html</guid><wfw:comment>http://www.blogjava.net/thinke365/comments/289887.html</wfw:comment><comments>http://www.blogjava.net/thinke365/archive/2009/08/05/289887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/thinke365/comments/commentRss/289887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/thinke365/services/trackbacks/289887.html</trackback:ping><description><![CDATA[要辨别事务的边界。就是启动事务和提交事务的边界。 DAO对象的每个方法都对应于一些数据库操作。<span style="font-size: 8pt; color: red">如果需要把两个或更多个方法作为一个事务，则需要在更高的层次定义事务</span>。<br />
<br />
Spring的一个好处是为事务<span style="font-size: 8pt; color: #0000ff">提供了一个统一的抽象</span>，不论底层是用什么实现，如Hibernate, IBatis或者JDBC，都可以使用一个统一的接口。<br />
如果用Spring来管理Hibernate事务，<span style="font-size: 8pt; color: red">最好不要直接使用Hibernate事务接口，因为这会造成混乱</span>。如果使用Spring来管理Hibernate事务，那么就调用Spring的接口。<br />
<br />
事务中<span style="font-size: 8pt; color: #339966">获取的Connection必须是和事务关联的那个Connection，不能直接调用DataSource的getConnection</span>，如果得到的是不同的Connection，是无法实现事务的。因此，最好调用Spring的事务工具类。<br />
<br />
事务管理器，事务状态，事务发起，事务提交，事务回滚等。<br />
<span style="font-size: 10pt; color: #ff6600">Spring事务，对系统性能的影响有多大，那些更复杂的分布式事务如何处理，如何衡量它的性能损耗呢</span>?<br />
<br />
JTS是底层接口，JTA是高层接口。<br />
JDBC事务是局部事务，只能应用于当前数据库。如果事务跨多个数据库，就必须使用分布式事务。这个时候可以采用JTA。<br />
JTA事务，涉及一个事务管理器和多个资源管理器。<span style="font-size: 8pt; color: red">资源管理器可以是任何持久性数据存储系统</span>，包括数据库系统、MIS系统、JMS等。<br />
<br />
JDBC驱动只有实现了XAConnection和XAResource接口才能参与JTA事务。但是一些高级JavaEE服务器可以将普通JDBC驱动<span style="font-size: 10pt; color: red">模拟为支持XA的JDBC驱动</span>，这个模拟过程是如何完成的?<br />
<br />
XAConnection和JDBC Connection的事务操作是不同的，<span style="font-size: 10pt; color: red">它绝不能自动提交</span>，也绝不能调用XAConnection的commit和rollback方法，<span style="font-size: 8pt; color: red">只能调用UserTransaction对象的begin，rollback和commit方法</span>。 <span style="color: #008000"><strong>如何看其底层实现机制。或者没有必要。</strong></span><br />
<br />
如果只有单个数据库，使用JTA会带来不必要的复杂性。不过对于Spring来说，使用哪种事务已经不重要了，因为<span style="font-size: 8pt; color: red">它定义了一个统一的抽象事务编程模型</span>。并配合声明式事务，选择JDBC事务，还是JTA事务，<span style="font-size: 8pt; color: red">所需要做的，仅仅是修改配置文件</span>。 一般不会涉及代码的修改，这是Spring的优秀功能之一。<br />
<br />
事务的隔离级别是由底层数据库实现的。而<span style="font-size: 8pt; color: red"><strong>事务的传播行为这是应用程序自己管理的</strong></span>。<br />
<br />
<img src ="http://www.blogjava.net/thinke365/aggbug/289887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/thinke365/" target="_blank">梦回唐朝</a> 2009-08-05 03:37 <a href="http://www.blogjava.net/thinke365/archive/2009/08/05/289887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>