??xml version="1.0" encoding="utf-8" standalone="yes"?>
* 配置SessionFactory
* 配置事务理?br />
* 事务的传播特?br />
* 那些c那些方法用事?br />
2、编写业务逻辑Ҏ
* l承HibernateDaoSupportc,使用HibernateTemplate来持久化QHibernateTemplate?br />
Hibernate Session的轻量装
* 默认情况下运行期异常才会回滚Q包括承了RuntimeException子类Q,普通异常是不会滚的
* ~写业务逻辑ҎӞ最好将异常一直向上抛出,在表C层QstrutsQ处?br />
* 关于事务边界的设|,通常讄C务层Q不要添加到Dao?nbsp;
3、了解事务的几种传播Ҏ?/span>
1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开?br />
2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执?br />
3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务Q则抛出异常?br />
4. PROPAGATION_REQUIRES_NEW: L开启一个新的事务。如果一个事务已l存在,则将q个存在的事务挂赗?br />
5. PROPAGATION_NOT_SUPPORTED: L非事务地执行Qƈ挂vM存在的事务?br />
6. PROPAGATION_NEVER: L非事务地执行Q如果存在一个活动事务,则抛出异?br />
7. PROPAGATION_NESTEDQ如果一个活动的事务存在Q则q行在一个嵌套的事务? 如果没有zd事务,
则按TransactionDefinition.PROPAGATION_REQUIRED 属性执?br />
4、Spring事务的隔ȝ?/span>
1. ISOLATION_DEFAULTQ?q是一个PlatfromTransactionManager默认的隔ȝ别,使用数据库默认的事务隔离U别.
另外四个与JDBC的隔ȝ别相对应
2. ISOLATION_READ_UNCOMMITTEDQ?q是事务最低的隔离U别Q它充许令外一个事务可以看到这个事务未提交的数据?br />
q种隔离U别会生脏读,不可重复dqd诅R?br />
3. ISOLATION_READ_COMMITTEDQ?保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
4. ISOLATION_REPEATABLE_READQ?q种事务隔离U别可以防止脏读Q不可重复读。但是可能出现像读?br />
它除了保证一个事务不能读取另一个事务未提交的数据外Q还保证了避免下面的情况产生(不可重复??br />
5. ISOLATION_SERIALIZABLE q是p最高代价但是最可靠的事务隔ȝ别。事务被处理为顺序执行?br />
除了防止脏读Q不可重复读外,q避免了qd诅R?nbsp;
注意Q配|bean的开?注意在property里name的属性D和你在beanc里面的那个name成员变量一栗?/span>
从上?xml的文说明我们可以知道id属性是一个bean的唯一标示W,q个id在管理Bean的BeanFactory或者ApplicationContext中必L唯一的标C符。用法如?br /> Person p = (Person) a.getBean("person");在getBean()Ҏ里所传递的参数是bean的id属性倹{?/p>
当然我们也可以用name属性来指定Bean的id演示代码如下Q?font face="Verdana">
<beans>
<bean name="person,user" class="org.spring.bean.Person">
<property name="name">
<value>zhangsan</value>
</property>
<property name="age">
<value>23</value>
</property>
</bean>
</beans>
使用bean的id和name来指定bean的id的区别:
id属性允许我们指定一个Bean的idQƈ且它在XML DTD中作Z个真正的XML元素的ID属性被标记Q所以XML解析器能够在其他元素指向它的时候做一些额外的效验Qname属性则与id相反Q如果我们在开发中有必要用一?span style="color: red">非法的字W?/span>Q那么我们可以通过name属性指定一个或多个id。当我们指定多个id时要用逗号Q?Q或?;)来进行分隔?/p>
用法如下QPerson p = (Person) a.getBean("person"); 或改写ؓPerson p = (Person) a.getBean("user");