获得hibernate的sql语句
我们知道hibernate会将hql解析成sql,也许在某些时候,我们需要这些sql。
不过hibernate的接口中没有公开的api,看来我们得自己行动了。
1.开始前的工作
1.1 知道如何阅读javadoc api
1.2 知道如何使用ant编译hibernate源码包
1.3 hibernate源码包在hibernate压缩包的src目录,api文档在doc目录
2.在执行Query.list()方法时,hibernate在控制台输出sql。从api文档中我们知道, Query接口有个实现类是net.sf.hibernate.impl.AbstractQueryImpl,但这个虚类中并没有实现list方法,继续查该类的子类net.sf.hibernate.impl.QueryImpl,呵呵,找到了。
listpublic List list()
throws HibernateException
|
3.查看net.sf.hibernate.impl.QueryImpl源代码,发现这里吧实现丢给了Session接口,看来我们得去找Session接口的麻烦。
| public List list() throws HibernateException {
verifyParameters(); Map namedParams = getNamedParams(); return getSession().find( bindParameterLists(namedParams), getQueryParameters(namedParams) ); } |
4.接口是没有实现代码的,因此我们直接看实

本文介绍了如何在Hibernate中获取执行的SQL语句,特别是当调用Query.list()方法时。通过阅读Javadoc API,编译Hibernate源码,以及深入到QueryImpl类,我们可以找到输出SQL的方法。
最低0.47元/天 解锁文章
294





