JSF+Spring+Hibernate的实例讲解(原创翻译)(8) Declarative transaction management:Spring 使用AOP(ASPect-oriented programming)去描述不使用EJB容器的声明性事务处理。这种方法,事务管理能被应用到任何POJO。Spring事务管理不和JTA(Java Transaction API)绑定,使用不同的事物策略工作。在例子应用程序中声明性事务管理Hibernate中的事务。Data-Access exception hierarchy:Spring提供一个值得回味的异常层次代替SQLException。使用Spring数据访问异常层次,Spring数据访问异常翻译者必须在Spring配置文件里面定义: <bean id="jdbcExceptionTranslator" class= "org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean>在例子应用程序中,如果插入的一个新产品的ID是重复的,一个 DataIntegrityViolationException 会被抛出。这个异常会被捕获然后作为DuplicateProdUCtIdException被抛出。这种方法,DuplicateProdUCtIdException能处理不同的数据访问异常。 Hibernate integration:Spring不强迫我们使用它强大的JDBC抽象特征。它和O/R映射框架集成的很好,尤其是Hibernate。Sping提供有效的、安全的Hibernate会话操作。在应用程序上下文操作Hibernate的配置SessionFactories 和JDBC数据源,使应用程序容易测试。集成层和HIbernateHibernate是一个开源O/R映射框架,它减少使用JDBC API的需要。Hibernate支持所有主流的SQL数据库管理系统。Hibernate Query Language是SQL面向对象的最小的扩展来设计的,在对象和关系世界间提供了一个优雅的桥。Hibernate提供数据恢复和更新的工具,事务管理,数据连接池,programmatic and declarative queries,声明实体关系管理。Hibernate和其他O/R映射框架相比入侵性较小。使用反射和运行时产生字节码,SQL在系统开始时产生。它允许我们开发符合Java习惯的持久对象,包括联合,继承,多态,聚合和Java集合框架。在例子应用程序中的业务对象是POJO,不需要实现Hibernate的特殊接口。Data Access Object (DAO)