作为一个高级特性,JpaTemplate、JpaTransactionManager 和
AbstractEntityManagerFactoryBean 的子类支持用户自定义的 JpaDialect
作为"jpaDialect"的bean属性进行注入。在这种情况下,DAO将不再接收 EntityManagerFactory 的引用
作为参数,而是接收一个完整的 JpaTemplate(也就是将它注入到 JpaDaoSupport
的"jpaTemplate"属性中去)。JpaDialect 实现能够激活一些由Spring支持的高级特性,这通常由特定的
实现供应商指定:
使用特定的事务语义(例如用户自定义的事务隔离级别和事务超时)
获取具备事务功能的Connection对象(暴露给基于JDBC的DAO)
从 PersistenceExceptions 到Spring的 DataAccessExceptions 高级转化
这对于特殊的事务语义和异常的高级转化这样的高级特性特别有价值。注意,所用的默认实现(DefaultJpaDialect)
并不提供任何特殊的功能,如果需要上述的特殊功能,必须指定相应的Dialect。
更多有关它的操作以及它如何在Spring的JPA支持中使用的详细信息请参见 JpaDialect 的Javadoc。