hibernate
shulan09
这个作者很懒,什么都没留下…
展开
-
hibernate
任何一种技术都是为了解决某些现存的问题而存在的,hibernate自然也不例外。在hibernate之前,我们所认识的技术架构中,都有如下的一些问题: 硬编码大量的sql(直接在类里写sql,实现数据逻辑): 1. 工作量大,团队在数据逻辑上浪费大量精力 2.一套数据库逻辑无法支持多原创 2013-04-19 20:38:16 · 612 阅读 · 0 评论 -
Hibernate n+1问题
关联查询时,如果外键为空,那么一共执行了n+1次查询,但是却只返回n+1个父表对象和n个子表对象,这就是hibernate的典型的N+1现象。 Hibernate在检索与父表关联的子表对象时,使用了默认的立即检索对策,这种策略有一下两点不足: (1) select语句的数目太多,需要频繁的访问数据库,会影响检索性能。如果需要查询n个Customer对象,那么必须执行n+1次select查询原创 2013-05-04 23:22:38 · 622 阅读 · 0 评论 -
iBatis和hibernate
iBatis和hibernate都是ORM框架,但是二者又有些区别,并且各有特色。下面,我们就来总结一下。 1. iBatis 易于掌握。拿来文档看半天到两天就可以掌握了。 Hibernate可能需要 3 倍以上的时间来掌握。 2. iBatis 更容易进行 sql 的优化。 3. iBatis 可以进行细粒度的优化 3.1 比如说我有一转载 2013-05-04 23:38:03 · 511 阅读 · 0 评论 -
load()和get()
load()和get()都是Session接口的方法,都是用于获取实体对象的,都只需要提供实体类的class对象或完整的类名和ID值。那么,它们有什么区别呢?在回答这个问题之前,我们先来看一下这两个方法的主要功能细节。 根据主键去获取实体,是最常用的也是最简单的查询。如果使用JDBC的话,可能会使用到这样的sql语句:select * from xxx where id=?;原创 2013-05-14 23:52:41 · 675 阅读 · 0 评论 -
hibernate缓存
使用hibernate架构,在首次访问数据时,速度很慢,但是如果同一时间,其他用户也也需要这些数据时,相应速度就会很快。这是因为hibernate的缓存机制。用户在需要数据时,会先从session中查询,如果session中有,就直接从session中取而不用查询数据库,如果没有才会查询数据库。当session中的对象更新使,会有一个版本标识,hibernate会根据这个版本标识来获知更新。如果缓原创 2013-05-15 00:22:31 · 611 阅读 · 0 评论