Hibernate面试题部分汇总集合(4)

发布时间:2021-06-06

此文档主要简绍J2EE中的hibernate面试突击问题部分集合

较明显的性能提升。 这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用

的时候一直开着。这会成为通过使用DAO模式将持久层抽象出来时的一个主要问题。为了将持久化机制完全地抽象出来,所有的数据库逻辑,包括打开或关闭会话,都不能在应用层出现。最常见的是,一些实现了简单接口的DAO实现类将数据库逻辑完全封装起来了。一种快速但是笨拙的解决方法是放弃DAO模式,将数据库连接逻辑加到应用层中来。这可能对一些小的应用程序有效,但是在大的系 统中,这是一个严重的设计缺陷,妨碍了系统的可扩展性。

幸运的是,Spring框架为Hibernate延迟加载与DAO模式的整合提供了一种

方便的解决方法。对那些不熟悉Spring与Hibernate集成使用的人,我不会在这里讨论过多的细节,但是我建议你去了解Hibernate与Spring集成的数据访问。以一个Web应用为例,Spring提供了OpenSessionInViewFilter和OpenSessionInViewInterceptor。我们可以随意选择一个类来实现相同的功能。两种方法唯一的不同就在于interceptor在Spring容器中运行并被配置在web应用的上下文中,而Filter在Spring之前运行并被配置在web.xml中。不管用哪个,他们都在请求将当前会话与当前(数据库)线程绑定时打开Hibernate会话。一旦已绑定到线程,这个打开了的Hibernate会话可以在DAO实现类中透明地使用。这个会话会为延迟加载数据库中值对象的视图保持打开状态。一旦这个逻辑视图完成了,Hibernate会话会在Filter的doFilter方法或者Interceptor的 postHandle方法中被关闭。

6.Hibernate有几种查询方式?

· Session的get()和load()查询;

· HQL查询;

· Query查询;

· Criteria查询;

· 本地SQL语句查询(Native SQl)。

7.Hibernate的性能优化?

⑴在运行的情况下使用最新版本的Hibernate发行版,如hibernate3中经过优 化的批量处理机制,代理机制、属性的延迟加载支持等;

⑵指定合理的缓存策略,通过系统压力测试得到最佳的缓存性能;

⑶采用合理的Session管理机制,避免无谓的数据库开销和临时对象的反复创建;

⑷尽量使用延迟加载特性,以避免系统资源的无谓消耗;

⑸设定合理的批处理参数(batch_size);

精彩图片

热门精选

大家正在看