简单描述Hibernate单元测试

开发 后端
本文介绍在Hibernate单元测试中最重要的就是要保持测试实例是独立的。因为该方法仍然涉及数据库,所以需要一种方法在每个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实例
责任编辑:佚名 来源: enet
相关推荐

2009-09-29 16:21:31

Hibernate单元

2009-06-02 14:24:32

Hibernate单元测试HSQLDB

2017-01-14 23:42:49

单元测试框架软件测试

2009-06-23 18:19:32

单元测试Hibernate配置

2009-09-22 12:45:00

Hibernate性能

2009-09-28 15:43:42

Hibernate O

2009-09-23 10:58:32

Hibernate T

2009-09-22 11:16:27

Hibernate经验

2009-09-27 13:00:56

Hibernate S

2017-01-14 23:26:17

单元测试JUnit测试

2017-01-16 12:12:29

单元测试JUnit

2009-09-22 17:41:07

Hibernate性能

2020-08-18 08:10:02

单元测试Java

2017-03-23 16:02:10

Mock技术单元测试

2023-07-26 08:58:45

Golang单元测试

2021-05-05 11:38:40

TestNGPowerMock单元测试

2011-07-04 18:16:42

单元测试

2020-05-07 17:30:49

开发iOS技术

2009-09-24 13:17:37

Hibernate类库

2009-09-21 13:56:09

Hibernate3.
点赞
收藏

51CTO技术栈公众号