小编Var*_*hta的帖子

准备好的语句,hibernate和HQL

在将HQL转换为SQL时,Hibernate在JDBC内部使用PreparedStatements.如何处理HQL中的内联参数?

例:

  public List<Student> loadAllStudentsByStatus(String status) {
    String queryString = "FROM Student student WHERE student.status = " + status;
    Query queryObject = currentSession().createQuery(queryString);
    return queryObject.list();
  }
Run Code Online (Sandbox Code Playgroud)

状态是"解析"并在SQL中用作参数,还是作为内联参数发送.

我在论证背后的原因是"最佳实践",以及重复调用的查询性能

hibernate hql jdbc prepared-statement

11
推荐指数
1
解决办法
2万
查看次数

测试Hibernate DAO,而不是围绕它构建Universe

我们有一个使用spring/Hibernate/MySQL构建的应用程序,现在我们想测试DAO层,但这里有一些我们面临的缺点.

考虑多个对象相互连接的用例,例如:Book有Pages.

  • 没有Book,Page对象不能存在,因为book_id是Page中的强制FK.
  • 为了测试页面,我必须创建一本书.

这个简单的用例很容易管理,但如果你开始构建一个库,直到你没有创建围绕Book和Page的整个Universe,你就无法测试它!

所以要测试Page;

  • 创建库
  • 创建部分
  • 创建流派
  • 创建作者
  • 创建书
  • 创建页面
  • 现在测试页面.

有没有一种简单的方法可以通过这个"宇宙创建",只是单独测试页面对象.我还希望能够测试与Page相关的HQL.例如:

SELECT new com.test.BookPage (book.id, page.name) FROM Book book, Page page.
Run Code Online (Sandbox Code Playgroud)

JUnit应该是孤立运行的,所以我必须编写代码来构建测试用例中的所有支持对象来创建Page.有关如何加速该过程的任何提示.

编辑: Spring在测试运行后遵循事务回滚的原则,从而恢复所有更改.随着我们的进一步发展,我们希望能够对模式进行更改,我希望能够定期对生产数据库(备份!)进行测试.

java junit spring unit-testing hibernate

6
推荐指数
1
解决办法
2584
查看次数

标签 统计

hibernate ×2

hql ×1

java ×1

jdbc ×1

junit ×1

prepared-statement ×1

spring ×1

unit-testing ×1