Hibernate研究&源码
文章平均质量分 78
iteye_16248
这个作者很懒,什么都没留下…
展开
-
从源码层面来看load与get的区别(五): Hibernate源码研究碎得(9)
上一篇花了很长时间梳理了下SessionImplementor接口与Hibernate里其它关键类和接口的关系并画出类图,最后得出"集万千宠爱于一身的SessionImpl"标题.本篇将接着往下走,下面先看第二句 EntityPersister persister;声明了一个变量persister.(写到这有两种选择,一是像对SessionImplementor一样对这个EntityPersis...2008-05-19 09:12:04 · 78 阅读 · 0 评论 -
Hibernate(21):getCurrentSession还是用openSession?
从Hibernate(十九): 异常"Session was already closed"开始的,连着几遍针对"Session was already closed"问题的持续跟踪, 在上篇Hibernate(20):默认情况下决定commit时session命运的三个条件里最终找到了源头. 路途虽说艰辛,但收获还是不小, "拔萝卜带出泥"地引出了一系列Hibernate世界里的...2009-04-22 09:48:19 · 77 阅读 · 0 评论 -
Hibernate(22):openSession的执行细节及相对优势
Hibernate(21):getCurrentSession还是用openSession?中, 我们从getCurrentSession执行细节上总结了这个方法生成session的优点. 本篇中,我们还从openSession的执行来看,openSession有没有优势,优势又是什么. 我们先从sessionFactory.openSession()一句开始入手. ...2009-04-23 11:04:14 · 148 阅读 · 0 评论 -
Hibernate(23):一个较为复杂些的例子
觉得该用一个更加丰富的例子来进一步研究Hibernate了. 于是用了这个RoleRightExample, 顾名思义, 这个例子完全模仿了项目中的"用户-角色-权限"问题, 见附件, 其中包括Mysql的建表语句和例子用数据. 用这个实例做进一步研究的初步打算: 1, 研究Hibernate.现在能想的有: 各种fetch plan和fet...2009-04-27 08:55:51 · 112 阅读 · 0 评论 -
Hibernate(24): 为什么用DetachedCriteria不能表连接地取数据?
HQL到DetachedCriteria的转换?中是项目中实际问题描述, 这里用一个独立的例子来模拟项目中的问题,也基于此做debug跟踪. 例子中有两个类: Husband和Wife,在Husband类里对Wife做了OneToOne关联. 代码和基于Annotation的映射配置如下:@Entitypublic class Husband { @Id...2009-05-05 08:39:14 · 108 阅读 · 0 评论 -
Hibernate(25): Eclipse的debug欺骗了我
Hibernate(24): 为什么用DetachedCriteria不能表连接地取数据?中,实验2为了能更好地模拟项目的真实环境, 我把t.commit()一句放到了真正调用wife.getName()语句之前. 抛异常了,org.hibernate.LazyInitializationException!这个很好理解,毕竟这里的Wife对象还只是一个Hibernate...2009-05-08 09:45:15 · 82 阅读 · 0 评论 -
想看Hibernate生成的SQL语句?
近段时间工作中开始大面积使用hibernate了,在使用过程中难免有这样那样的问题,问题出来后怎么解决,当然首先是跟同事商量,毕竟这样的效率最高,若同事忙或别的什么原因,上网查有没有类似的问题,别人是怎么解决的, 不过有时这个也是不太方便的,虽说现在搜索这么发达,但在短时间内搜到一个不错解决方案也很不容易。 于是就逼着自己去想别的途径。 查看源码是个不错的选择。 当...2008-10-19 14:08:45 · 2845 阅读 · 0 评论 -
在hibernate里用Projection里的一个问题及其解决
在<想看Hibernate生成的SQL语句?>里,我列出怎么来看Hibernate生成sql的方法, 在末尾留了一个小尾巴,今天把它补上. 程序中的实际场景是这样的, 一个Model类里有contractBw,nodeType,subCompany,overBw等属性, 现在要对contractBw和overBw有三次汇总求和并显示记录条数,分别是按contractBw...2008-10-24 15:25:12 · 176 阅读 · 0 评论 -
BD到Objects的转换时使用Map的一个陷阱.
BD到Objects的转换时使用Map的一个陷阱.数据从BD到Objects的转变: 上一篇中, 描述了下问题的引起及其解决, 这篇中将结合Hibernate的query机制来看看问题发生的根源. 先看hibernate执行query时的工作原理, 它将分三步走:第一步以Mapping配置为出发点根据用户的调用生成sql,第二步把生成的sql发往数据库等待结果返回,...2008-10-27 13:40:45 · 103 阅读 · 0 评论 -
Hibernate:Query中list、iterate和uniqueResult三个方法的区别
想看下org.hibernate.Query接口中定义的三个方法(list、iterate和uniqueResult)有什么区别。 通过追踪地看一相关源码后,发现情况是这样的。简单说来,它们的特点是这样的: 1,list方法是把所有满足条件的结果集都解析转换成Model对象,再把这些对象放到List实例中。 2,iterate调用了ResultSet的next...2010-09-07 16:31:04 · 191 阅读 · 0 评论 -
关于Session.getIdentifier(Object entity)的讨论
在重读Hibernate时,在4.2.2一节发现这么一段话: Hibernate exposes database identity to the application in two ways(Hibernate的API提供了两种方法来获得数据库ID): ■ The value of the identifier property of a persistent instanc...2009-08-10 17:30:02 · 202 阅读 · 0 评论 -
Hibernate源码研究碎得整理(14-25)
1, Hibernate源码研究碎得(十四): EntityKey类的作用及研究方法收获2, Hibernate(十五):用Hibernate求记录总数的一个怪胎 findbycriteria(d), size().3, Hibernate(十六): DetachedCriteria子查询与ALIAS_TO_ENTITY 4, Hibernate(十七): Criteria子查询...2010-10-24 19:30:18 · 104 阅读 · 0 评论 -
Hibernate(20):默认情况下决定commit时session命运的三个条件
Hibernate(十九): 异常"Session was already closed"中,针对"Session was already closed"异常,我们发现最终调用了transactionContext.managedClose方法来关掉了session, 那么这个过程具体是什么样的? 这篇中将加以梳理. 在JDBCTransaction类(Trans...2009-04-21 10:03:36 · 124 阅读 · 0 评论 -
Hibernate(十九): 异常"Session was already closed"
做一个Hibernate简单实验时, 碰到了这个异常: Session was already closed. 现在有点时间, 这样见了异常就想看看: 是怎么"触犯"了hibernate导致这个异常的抛出? 例子中的代码结构是这样的: Session session = sessionFactory.getCurrentSession(); Tr...2009-04-20 08:33:42 · 185 阅读 · 0 评论 -
Hibernate如何实现分页的?
解决项目中一问题时, 由于涉及到Hibernate的分页功能, 于是打草搂兔子地研究了下Hibernate分页功能的实现。 我们先来看用Hibernate来实现分页的代码片段: Criteria c = session.createCriteria(Area.class); c.setFirstResult(10); ...2009-12-17 14:50:28 · 469 阅读 · 0 评论 -
满城尽是Interface,接口真的那么神奇?--Hibernate源码研究碎得(10)
满城尽是Interface,接口真的那么神奇?晚饭后由于不能很集中地思考,就大致地看了EntityPersister这个接口的继承关系及其实现类.呵,真是不看不知道,一看吓一跳,又是一个很庞大的继承树,而且还里有那么多的接口,不禁就感叹了:为什么Hibernate里这么多的接口?这样的接口设计能达到想像的效果么?在解藕合方面真能那么灵验?感觉有些接口过度了,不丁点的小事动不动就来一个接口.说句...2008-05-20 09:03:37 · 94 阅读 · 0 评论 -
甚是无奈的"亲子鉴定"--Hibernate源码研究碎得(12)
Hibernate中"亲子鉴定"本篇中,我们来看doLoad方法,按上篇的分析方法,我们将这个方法分为三部分: step1,loadFromSessionCache()的调用和对返回结果的判断. step2,loadFromSecondLevelCache()的调用和对返回结果的判断. step3,若上面两个方法的的返回值都为null的话,最后调用loadFromDatasource并返回此方法...2008-05-22 08:51:28 · 157 阅读 · 0 评论 -
EntityEntry, EntityKey, Cache..Hibernate源码研究碎得(13)
如上篇结束时所言,本篇中着重研究upgradeLock这个方法. 进入方法后第一句就是这个requestedLockMode.greaterThan( entry.getLockMode())判断,若不成立,就马上退出此方法. 有些疑问的是EntityEntry类型的entry里getLockMode有什么意义?再往下追就是EntityEntry里的lockMode是什么时候什么情景下赋值...2008-05-23 08:41:33 · 360 阅读 · 0 评论 -
Hibernate源码研究碎得整理(一到十三)
前段时间对Acegi的研究,又勾起我当时看Hibernate源码时的感觉了, 也就想再拾起当初的研究劲头来. 于是趁着周末,当老早写的Hibernate源码方面的博客整理一下,以备以后查找.Hibernate源码研究碎得(一): http://rmn190.iteye.com/blog/187604 摘要: Hibernate初始化, SecondPass接口的概念...2009-02-21 16:32:25 · 214 阅读 · 0 评论 -
Hibernate源码研究碎得(十四): EntityKey类的作用及研究方法收获
在博客"http://rmn190.iteye.com/blog/194228"中提出了EntityKey这个类是干啥的问题,当时也没能想通这个类是做啥的, 只是看了下这个类里某些方法的实现. 今天把回过关再源码及这个类实例的应用场景说一下,也就可以得出相对正确的结果了. 这次看EntityKey时没有过多的纠缠到这个类方法的实现上, 更多地看它的JavaDocs里的描述信...2009-02-22 22:43:21 · 227 阅读 · 0 评论 -
怎么用Hibernate中的Criteria来表达下面的SQL
这个问题解决后, 我对Hibernate的查询功能更感兴趣了, 现在项目中一个查询是用如下的SQL下的, 想能不能用Criteria来表达呢? select a.CORP_ID as groupbyScalar,a.aa as referenceScalar,b.bb as resultScalar from (select CORP_ID ,count(*) as...2009-02-24 16:07:08 · 77 阅读 · 0 评论 -
Hibernate(十五):用Hibernate求记录总数的一个怪胎
项目中求满足某一条件记录数是这样来的:super.getHibernateTemplate().findByCriteria(d).size(). 有些怪.由于对接口编程与hibernate也多少有些了解,以学习的心态首先想到的是,可能hibernate方法findByCriteria的是一List的非ArrayList实现类,也就是hibernate自身的一个特定功能的list实...2009-04-07 21:28:59 · 113 阅读 · 0 评论 -
Hibernate(十六): DetachedCriteria子查询与ALIAS_TO_ENTITY
跟Hibernate(十五):用Hibernate求记录总数的一个怪胎里描述的问题相关. 项目中一个需求要得到满足条件记录的总数,起初想到的是DetachedCriteria里设置setProjection(Projections.projectionList().add(Projections.rowCount(),"rowCount"))后,再以setResultTr...2009-04-08 13:01:14 · 220 阅读 · 0 评论 -
Hibernate(十七): Criteria子查询与ENTITY_MAP时的问题(续一)
在Hibernate(十六): DetachedCriteria子查询与ALIAS_TO_ENTITY的末尾,问题的焦点集中到hibernate对生成PreparedStatement的处理上. 接着再追问:是不是Hibernate对那个preparedStatement做了什么特殊处理? 一般来说,hibernate会对一个preparedStatement做些什么样的处理? ...2009-04-09 08:39:14 · 139 阅读 · 0 评论 -
Hibernate(十八): Hibernate初始化时如何生成SQL语句?
昨天看Hibernate方面书时又看到了"dynamic-update=true"的配置.�-04-13 09:24:57 · 699 阅读 · 0 评论 -
Hibernate删除一个session.load来的Model类?
如下所示: public static void delete() { Session session = HiberUtil.getSession(); ProjCost toDelete= (ProjCost)session.load(ProjCost.class, 6723L); // 用load方式就是想不希望...2009-11-27 16:44:20 · 89 阅读 · 0 评论 -
createSQLQuery时,addScalar的应用
问题起因: 抛了异常:nestedexception is org.hibernate.PropertyNotFoundException: Could not find setter forYEARMONTH on class。 对应的Model里确实没有属性YEARMONTH。 不过名为yearMonth的属性。 ...2010-11-19 16:11:10 · 228 阅读 · 0 评论