代码之家  ›  专栏  ›  技术社区  ›  Nadav

Java/Hibernate:如何为复杂SQL编写DAO代码

  •  6
  • Nadav  · 技术社区  · 16 年前

    问题是,随着应用程序越来越大,SQLs变得更加复杂,难以维护。似乎维护使用StringBuilder创建的SQL还不够困难,现在更糟糕的是,SQL是使用许多if语句和循环动态构建的。

    正确的方法是什么?有没有办法使动态sql查询更清晰?有没有一种方法可以使用Hibernate实体来实现这一点?

    我为这个问题的抽象性感到抱歉。尽管如此,我还是希望你有很好的意见;)

    3 回复  |  直到 15 年前
        1
  •  3
  •   Bozho    16 年前

    SELECT new com.package.model.SearchResultEntry(product, price) FROM Product product, 
        IN(product.variantPrices) price WHERE ....
    

    上面返回一个新的(非实体!)由两个实体(产品和价格)组成的对象。您也可以使用 List 从同一结果中放入不同的实体。

    this tutorial 一本书。

    使用动态参数进行这些查询,并使用最合适的类将其存储为 @NamedQueries

        2
  •  2
  •   davek    16 年前

        3
  •  0
  •   Jared    16 年前

    假设您无法在HQL中完成所需的工作,请查看 ibatis 它将允许您使用特定的SQL查询和存储过程设置映射。这也将是对你的项目的另一个依赖,所以也要考虑到这一点。