﻿<?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/tfzhu/category/43571.html</link><description>每天进步一点点！</description><language>zh-cn</language><lastBuildDate>Tue, 01 Jun 2010 17:03:04 GMT</lastBuildDate><pubDate>Tue, 01 Jun 2010 17:03:04 GMT</pubDate><ttl>60</ttl><item><title>Spring的声明式事务</title><link>http://www.blogjava.net/tfzhu/archive/2010/06/01/322500.html</link><dc:creator>断点</dc:creator><author>断点</author><pubDate>Tue, 01 Jun 2010 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/tfzhu/archive/2010/06/01/322500.html</guid><wfw:comment>http://www.blogjava.net/tfzhu/comments/322500.html</wfw:comment><comments>http://www.blogjava.net/tfzhu/archive/2010/06/01/322500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tfzhu/comments/commentRss/322500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tfzhu/services/trackbacks/322500.html</trackback:ping><description><![CDATA[<p><span style="color: #0000ff">1、声明式事务配置</span><br />
&nbsp;* 配置SessionFactory<br />
&nbsp;* 配置事务管理器<br />
&nbsp;* 事务的传播特性<br />
&nbsp;* 那些类那些方法使用事务<br />
<br />
<span style="color: #0000ff">2、编写业务逻辑方法</span><br />
&nbsp;* 继承HibernateDaoSupport类，使用HibernateTemplate来持久化，HibernateTemplate是<br />
&nbsp;&nbsp; Hibernate Session的轻量级封装<br />
&nbsp;* 默认情况下运行期异常才会回滚（包括继承了RuntimeException子类），普通异常是不会滚的<br />
&nbsp;* 编写业务逻辑方法时，最好将异常一直向上抛出，在表示层（struts）处理<br />
&nbsp;* 关于事务边界的设置，通常设置到业务层，不要添加到Dao上&nbsp; <br />
<br />
<span style="color: #0000ff">3、了解事务的几种传播特性</span><br />
&nbsp;1.&nbsp;PROPAGATION_REQUIRED: 如果存在一个事务，则支持当前事务。如果没有事务则开启<br />
&nbsp;2.&nbsp;PROPAGATION_SUPPORTS: 如果存在一个事务，支持当前事务。如果没有事务，则非事务的执行<br />
&nbsp;3.&nbsp;PROPAGATION_MANDATORY: 如果已经存在一个事务，支持当前事务。如果没有一个活动的事务，则抛出异常。<br />
&nbsp;4.&nbsp;PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在，则将这个存在的事务挂起。<br />
&nbsp;5.&nbsp;PROPAGATION_NOT_SUPPORTED: 总是非事务地执行，并挂起任何存在的事务。<br />
&nbsp;6.&nbsp;PROPAGATION_NEVER: 总是非事务地执行，如果存在一个活动事务，则抛出异常<br />
&nbsp;7.&nbsp;PROPAGATION_NESTED：如果一个活动的事务存在，则运行在一个嵌套的事务中. 如果没有活动事务, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行<br />
<br />
<span style="color: #0000ff">4、Spring事务的隔离级别</span><br />
&nbsp;1.&nbsp;ISOLATION_DEFAULT： 这是一个PlatfromTransactionManager默认的隔离级别，使用数据库默认的事务隔离级别.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外四个与JDBC的隔离级别相对应<br />
&nbsp;2.&nbsp;ISOLATION_READ_UNCOMMITTED： 这是事务最低的隔离级别，它充许令外一个事务可以看到这个事务未提交的数据。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种隔离级别会产生脏读，不可重复读和幻像读。<br />
&nbsp;3.&nbsp;ISOLATION_READ_COMMITTED： 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据<br />
&nbsp;4.&nbsp;ISOLATION_REPEATABLE_READ： 这种事务隔离级别可以防止脏读，不可重复读。但是可能出现幻像读。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 它除了保证一个事务不能读取另一个事务未提交的数据外，还保证了避免下面的情况产生(不可重复读)。<br />
&nbsp;5.&nbsp;ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 除了防止脏读，不可重复读外，还避免了幻像读。&nbsp;<br />
</p>
<img src ="http://www.blogjava.net/tfzhu/aggbug/322500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tfzhu/" target="_blank">断点</a> 2010-06-01 23:25 <a href="http://www.blogjava.net/tfzhu/archive/2010/06/01/322500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring中applicationContext.xml的bean里的id和name属性区别 </title><link>http://www.blogjava.net/tfzhu/archive/2010/01/14/309571.html</link><dc:creator>断点</dc:creator><author>断点</author><pubDate>Thu, 14 Jan 2010 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/tfzhu/archive/2010/01/14/309571.html</guid><wfw:comment>http://www.blogjava.net/tfzhu/comments/309571.html</wfw:comment><comments>http://www.blogjava.net/tfzhu/archive/2010/01/14/309571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tfzhu/comments/commentRss/309571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tfzhu/services/trackbacks/309571.html</trackback:ping><description><![CDATA[<p><span style="color: #008000"><span style="color: #008000">&lt;beans&gt;<br />
&lt;bean id="person" class="org.spring.bean.Person"&gt;<br />
&nbsp;&lt;property name="name"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;zhangsan&lt;/value&gt;<br />
&nbsp;/property&gt;<br />
&nbsp;&lt;property name="age"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;23&lt;/value&gt;<br />
&nbsp;&lt;/property&gt;<br />
&lt;/bean&gt;<br />
&lt;/beans&gt;</span></span></p>
<p><span style="color: #008000"><span style="color: #008000">注意：配置bean的开始,注意在property里name的属性值要和你在bean类里面的那个name成员变量一样。</span></span></p>
<p>从上面.xml的文档说明我们可以知道id属性是一个bean的唯一标示符，这个id在管理Bean的BeanFactory或者ApplicationContext中必须是唯一的标示符。用法如下<br />
Person p = (Person) a.getBean("person");在getBean()方法里所传递的参数就是bean的id属性值。</p>
<p>当然我们也可以使用name属性来指定Bean的id演示代码如下：<font face="Verdana"><br />
<span style="color: #008000"><font face="Verdana">&lt;beans&gt;<br />
&lt;bean name="person,user" class="org.spring.bean.Person"&gt;<br />
&nbsp; &lt;property name="name"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;zhangsan&lt;/value&gt;<br />
&nbsp; &lt;/property&gt;<br />
&nbsp; &lt;property name="age"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;23&lt;/value&gt;<br />
&nbsp;&lt;/property&gt;<br />
&lt;/bean&gt;<br />
&lt;/beans&gt;</font></span></font></p>
<p><font face="Verdana"></font>使用bean的id和name来指定bean的id的区别：<br />
id属性允许我们指定一个Bean的id，并且它在XML DTD中作为一个真正的XML元素的ID属性被标记，所以XML解析器能够在其他元素指向它的时候做一些额外的效验；name属性则与id相反，如果我们在开发中有必要使用一些<span style="color: red">非法的字符</span>，那么我们可以通过name属性指定一个或多个id。当我们指定多个id时要用逗号（,）或者(;)来进行分隔。</p>
<p>用法如下：Person p = (Person) a.getBean("person"); 或改写为Person p = (Person) a.getBean("user");</p>
<br />
<br />
posted @ 2009-02-11 10:35 断点 阅读(1005) | 评论 (0) 
<img src ="http://www.blogjava.net/tfzhu/aggbug/309571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tfzhu/" target="_blank">断点</a> 2010-01-14 22:02 <a href="http://www.blogjava.net/tfzhu/archive/2010/01/14/309571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>