马可波罗的梦乡

BlogJava 首页 新随笔 联系 聚合 管理
  4 Posts :: 50 Stories :: 2 Comments :: 0 Trackbacks

2009年8月5日 #

可以把Spring配置成Listener,它在Filter启动之前就已经加载。

eclipse异常退出,在Navigator视图看不到项目了,重新导一次项目就可以了。
重新编译没有用,说是找不到一个jar里的某个类,把这个类从编译路径删除,再加入,代码会重新编译,之后发现没有错误提示了。

posted @ 2009-08-27 00:37 梦回唐朝 阅读(160) | 评论 (0)编辑 收藏

异常机制的本质是,当程序出现错误时,帮助程序员锁定错误,并对程序进行修正。
现代程序的规模已经大到让人无法全知的程度,因此异常机制是一种很有效的机制

找出错误体系,逐层细化,并最终构成一个异常体系

和JDBC savepoint,回滚等结合起来,就要看JDBC代码了,走太远不好,够用就行。


posted @ 2009-08-06 22:06 梦回唐朝 阅读(346) | 评论 (2)编辑 收藏

要辨别事务的边界。就是启动事务和提交事务的边界。 DAO对象的每个方法都对应于一些数据库操作。如果需要把两个或更多个方法作为一个事务,则需要在更高的层次定义事务

Spring的一个好处是为事务提供了一个统一的抽象,不论底层是用什么实现,如Hibernate, IBatis或者JDBC,都可以使用一个统一的接口。
如果用Spring来管理Hibernate事务,最好不要直接使用Hibernate事务接口,因为这会造成混乱。如果使用Spring来管理Hibernate事务,那么就调用Spring的接口。

事务中获取的Connection必须是和事务关联的那个Connection,不能直接调用DataSource的getConnection,如果得到的是不同的Connection,是无法实现事务的。因此,最好调用Spring的事务工具类。

事务管理器,事务状态,事务发起,事务提交,事务回滚等。
Spring事务,对系统性能的影响有多大,那些更复杂的分布式事务如何处理,如何衡量它的性能损耗呢?

JTS是底层接口,JTA是高层接口。
JDBC事务是局部事务,只能应用于当前数据库。如果事务跨多个数据库,就必须使用分布式事务。这个时候可以采用JTA。
JTA事务,涉及一个事务管理器和多个资源管理器。资源管理器可以是任何持久性数据存储系统,包括数据库系统、MIS系统、JMS等。

JDBC驱动只有实现了XAConnection和XAResource接口才能参与JTA事务。但是一些高级JavaEE服务器可以将普通JDBC驱动模拟为支持XA的JDBC驱动,这个模拟过程是如何完成的?

XAConnection和JDBC Connection的事务操作是不同的,它绝不能自动提交,也绝不能调用XAConnection的commit和rollback方法,只能调用UserTransaction对象的begin,rollback和commit方法如何看其底层实现机制。或者没有必要。

如果只有单个数据库,使用JTA会带来不必要的复杂性。不过对于Spring来说,使用哪种事务已经不重要了,因为它定义了一个统一的抽象事务编程模型。并配合声明式事务,选择JDBC事务,还是JTA事务,所需要做的,仅仅是修改配置文件。 一般不会涉及代码的修改,这是Spring的优秀功能之一。

事务的隔离级别是由底层数据库实现的。而事务的传播行为这是应用程序自己管理的

posted @ 2009-08-05 03:37 梦回唐朝 阅读(203) | 评论 (0)编辑 收藏