Hibernate数据访问是否可以抛出类似于Spring DeadlockLoserDataAccessExceptio



我目前正在研究一个在不同数据库上使用数据访问的项目。我们的主数据库是通过Hibernate(通过Criteria框架或HQL查询)访问的,但是我们也可以使用普通的JDBC/SQL查询(通过Spring-Jdbc)访问其他数据库。

对于我们的一些JDBC调用,我们必须处理DAO层抛出一些Spring运行时TransientDataAccessException风格的可能性,如DeadlockLoserDataAccessExceptionCannotAcquireLockException

我的问题是:我们应该为Hibernate dao抛出的类似异常做计划吗?编写显示此类异常的测试是非常困难的,如果它们不能抛出,我不想构建对这些异常的支持。如果可以,具体有哪些例外呢?你觉得呢?

从Spring支持的持久性实现抛出的异常并不真正根植于Spring =>它们是数据访问异常

因此,可以从纯Hibernate实现中获得类似的异常,例如:

lockacquitionexception:表示获取数据库锁有问题

话虽如此,专门测试这些异常是不明智的。因此它们是RuntimeException。如果您从Spring支持的实现中得到这些异常,我宁愿关注解决问题。

看看hibernate Session api, http://docs.jboss.org/hibernate/annotations/3.5/api/index.html?org/hibernate/Session.html you;特别是createQuery和createcrcriteria。

createQuery,它接受一个hql字符串,返回一个Query对象并抛出一个HibernateException。createCriteria返回一个没有抛出异常的Criteria对象。在Criteria或Query对象上调用.list()会抛出一个HibernateException。

大多数函数调用,如果抛出异常,抛出一个HibernateException。有一些特殊的情况,比如在一个Query对象上调用uniqueResult(),除了会抛出一个HibernateException之外,还会抛出一个NonUniqueResultException。

相关内容

最新更新