总体上讲,Hibernate大概提供了5种检索对象的方式:
- 导航对象图检索方式
根据已经加载的对象,导航到其他对象。例如,在个性化定制系统中,对于已经加载的Subject对象,调用它的getOrders().iterator()方法就可以导航到所有关联的UserOrderInfo对象,假如在关联级别使用了延迟加载检索策略,那么首次执行此方法时,Hibernate会从数据库中加载关联的UserOrderInfo对象,否则就从缓存中取得UserOrderInfo对象。 - HQL检索方式
使用面向对象的HQL查询语言。Session的find()方法用于执行HQL查询语句。此外Hibernate还提供了Query接口,它是Hibernate提供的专门的HQL查询接口,能够执行各种复杂的HQL查询语句。 - OID检索方式
按照对象的OID来检索对象。Session的get()和load()方法提供了这种功能。如果在应用程序中事先知道了OID,就可以使用这种检索对象的方式。 - QBC检索方式
使用QBC API来检索对象。这种API封装了基于字符串形式的查询语句,提供了更加面向对象的接口。 - 本地SQL检索方式
使用本地数据库的SQL查询语句。Hibernate会负责把检索到的JDBC ResultSet结果集映射为持久化对象图。