简单描述Hibernate单元测试

Hibernate还是比较常用的,于是我研究了一下Hibernate单元测试,在这里拿出来和大家分享一下,希望对大家有用。

本文介绍在Hibernate单元测试中最重要的就是要保持测试实例是独立的。因为该方法仍然涉及数据库,所以需要一种方法在每个Hibernate单元测试实例之前清理数据库。在我的数据库架构中有四个表,所以我在TestSchemaz上编写了reset()方法,该方法从使用JDBC的表中删除所有行。注意,因为HSQLDB能识别外键,删除表的顺序是很重要的,下面是代码:

 
 
 
  1. public static void reset() throws SchemaException {  
  2. Session session = HibernateUtil.getSession();  
  3. try {  
  4. Connection connection = session.connection();  
  5. try {  
  6. Statement statement = connection.createStatement();  
  7. try {  
  8. statement.executeUpdate("delete from Batting");  
  9. statement.executeUpdate("delete from Fielding");  
  10. statement.executeUpdate("delete from Pitching");  
  11. statement.executeUpdate("delete from Player");  
  12. connection.commit();  
  13. }  
  14. finally {  
  15. statement.close();  
  16. }  
  17. }  
  18. catch (HibernateException e) {  
  19. connection.rollback();  
  20. throw new SchemaException(e);  
  21. }  
  22. catch (SQLException e) {  
  23. connection.rollback();  
  24. throw new SchemaException(e);  
  25. }  
  26. }  
  27. catch (SQLException e) {  
  28. throw new SchemaException(e);  
  29. }  
  30. finally {  
  31. session.close();  
  32. }  

当确定在Hibernate 3.0中进行大量删除操作时,应该能从应用程序中删除直接JDBC的***一位。到此时为止,必须获取数据库连接并向数据库直接提交SQL。在确保没有关闭连接的情况下,为了释放资源,只关闭会话就足够了。出于手工编写许多JCBC代码来进行开发的习惯,***个版本关闭了JDBC连接。因为通过配置Hibernate创建的连接池只带有一个链接,在***个之后就完全破坏了测试。一定要注意这种情况!既然在测试类运行时(设想运行所有的测试实例)不能确定数据库的状态,应该在setUp()方法中包含数据库清除,如下所示:

 
 
 
  1. public void setUp() throws Exception {  
  2. TestSchema.reset();  

【编辑推荐】

  1. Hibernate类库简单描述
  2. 浅析Hibernate延迟加载
  3. Spring Hibernate简单讨论
  4. 介绍Hibernate版本的更新
  5. 简单讲述Hibernate实例

当前文章:简单描述Hibernate单元测试
URL网址:http://www.shufengxianlan.com/qtweb/news5/350205.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联