我花了几天时间研究Hibernate并且有一些关于它的小问题,它们本身并不值得混乱,但我认为,总的来说,有助于深入了解Hibernate如何作为一个整体运行:
hibernate.cfg.xml
配置文件中添加对它的引用,以及将相应的POJO注释为@Entity
。这感觉非常多余。为什么你只能使用注释而只是跳过XML条目?Query
API的参数绑定有很好的内置支持,但我看不到Criteria
API的这些选项。是否可以使用Criteria
个实例进行参数化:如果是,如何,如果不是,为什么?CacheProvider
,将其抛出到ruuntime类路径并让Hibernate使用您自己的自行开发的缓存系统(就像SLF4J用记录器绑定一样)?提前致谢!
答案 0 :(得分:2)
因为它会强制Hibernate扫描类路径的所有类以发现带注释的类。并且因为您可能在类路径中有一些您不想在应用程序中使用的实体。或者您可能希望在会话工厂中使用某些实体,而在另一个实体中使用其他实体。或者甚至是两个独立会话工厂中的同一个实体。
Criteria API具有直接绑定参数的方法:例如Restrictions.eq("someProperty", someValue);
。
当然可以编写自己的二级缓存,但您必须配置Hibernate才能使用它,就像对所有其他提供程序一样。删除类路径中的类是不够的。