2

我已经花了几天时间研究 Hibernate,并且有几个关于它的小问题,它们本身并不真正值得混乱 SO,但我认为,总的来说,有助于深入了解 Hibernate 的整体运作方式:

  • hibernate.cfg.xml要创建 Hibernate 实体,必须在配置文件添加对它的引用,并将相应的 POJO 注释为@Entity. 这感觉非常多余。为什么你可以只使用注解而跳过 XML 条目?
  • Hibernate 似乎对其 API 的参数绑定具有很好的内置支持Query,但我看不到CriteriaAPI 的此类选项。是否可以使用Criteria实例进行参数化:如果可以,如何实现,如果不可以,为什么?
  • 我看到许多 L2(2 级)缓存提供程序:EhCache、OSCache、SwarmCache 等。是否可以编写自己的CacheProvider,将其放在运行时类路径上并让 Hibernate 使用您自己的本地缓存系统(就像 SLF4J 使用记录器绑定一样) ?

提前致谢!

4

1 回答 1

2
  1. 因为它会强制 Hibernate 扫描类路径的所有类以发现带注释的类。并且因为您可能在类路径中有一些您不想在应用程序中使用的实体。或者您可能希望在会话工厂中拥有一些实体,而在另一个中拥有一些实体。甚至是两个单独的会话工厂中的同一个实体。

  2. Criteria API 具有直接绑定参数的方法:Restrictions.eq("someProperty", someValue);例如。

  3. 当然可以编写自己的二级缓存,但您必须配置 Hibernate 才能使用它,就像使用所有其他提供程序一样。删除类路径中的类是不够的。

于 2012-06-21T16:55:09.580 回答