我有一个使用 Hibernate 与 MsSQL 2005 服务器通信的 Java 应用程序,驱动程序是net.sourceforge.jtds 1.2.4.
一切正常,但性能很糟糕,我怀疑索引没有用于传递给它的查询,因为响应时间与表中的条目数成正比。
我编写了一个使用相同驱动程序(jtds)但不使用 Hibernate 的小型测试应用程序,并且我能够重现糟糕的性能(或者我相信)。当我使用准备好的语句时,我发现与使用 Hibernate 的性能相同(响应时间约为 1 秒),但当我不使用时,性能却很好(约 10 毫秒)。
我可以使用Hibernate executeSql
方法而不是Criteria
接口来获得同样好的性能,但我想避免这种情况,因为我希望代码保持模块化并且结果不会转换为我的实体类。
有什么方法可以让 Hibernate 获得良好的性能,同时仍然使用与后端无关的方式进行查询并将结果转换为实体类对象?