Understanding SingleTableEntityPersister n QueryLoader
Posted
by Iapilgrim
on Stack Overflow
See other posts from Stack Overflow
or by Iapilgrim
Published on 2010-03-18T11:46:58Z
Indexed on
2010/03/18
11:51 UTC
Read the original article
Hit count: 333
Hi, I have the Hibernate model
@Cache(usage = CacheConcurrencyStrategy.NONE, region = SitesConstants.CACHE_REGION)
public class Node extends StatefulEntity implements Inheritable, Cloneable {
private Node _parent;
private List<Node> _childNodes;
.. }
@Cache(usage = CacheConcurrencyStrategy.NONE, region = SitesConstants.CACHE_REGION)
public class Page extends Node implements Defaultable, Securable {
private RootZone _rootZone;
......
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "root_zone_id", insertable = false, updatable = false)
public RootZone getRootZone() {
return _rootZone;
}
public void setRootZone(RootZone rootZone) {
if (rootZone != null) {
rootZone.setPageId(this.getId());
_rootZone = rootZone;
}
}
I want to get all pages ( call getSiteTree), so I using this query
String hpql = "SELECT n FROM Node n ";
See the trace I find
Page.setRootZone(RootZone) line: 155
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
BasicPropertyAccessor$BasicSetter.set(Object, Object, SessionFactoryImplementor) line: 66
PojoEntityTuplizer(AbstractEntityTuplizer).setPropertyValues(Object, Object[]) line: 352
PojoEntityTuplizer.setPropertyValues(Object, Object[]) line: 232
SingleTableEntityPersister(AbstractEntityPersister).setPropertyValues(Object, Object[], EntityMode) line: 3580
TwoPhaseLoad.initializeEntity(Object, boolean, SessionImplementor, PreLoadEvent, PostLoadEvent) line: 152
QueryLoader(Loader).initializeEntitiesAndCollections(List, Object, SessionImplementor, boolean) line: 877
QueryLoader(Loader).doQuery(SessionImplementor, QueryParameters, boolean) line: 752
QueryLoader(Loader).doQueryAndInitializeNonLazyCollections(SessionImplementor, QueryParameters, boolean) line: 259
QueryLoader(Loader).doList(SessionImplementor, QueryParameters) line: 2232
QueryLoader(Loader).listIgnoreQueryCache(SessionImplementor, QueryParameters) line: 2129
QueryLoader(Loader).list(SessionImplementor, QueryParameters, Set, Type[]) line: 2124
QueryLoader.list(SessionImplementor, QueryParameters) line: 401
QueryTranslatorImpl.list(SessionImplementor, QueryParameters) line: 363
HQLQueryPlan.performList(QueryParameters, SessionImplementor) line: 196
SessionImpl.list(String, QueryParameters) line: 1149
QueryImpl.list() line: 102
QueryImpl.getResultList() line: 67
NodeDaoImpl.getSiteTree(long) line: 358
PageNodeServiceImpl.getSiteTree(long) line: 797
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line: 307
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 198
$Proxy100.getSiteTree(long) line: not available
the calling setRootZone in Page makes Hibernate issue a hit to database. I don't want this.
So my question is + Why query String hpql = "SELECT n FROM Node n "; issues un-expected trace logs like above.
Why the query String hpql = "SELECT n.nodename FROM Node n " not?
What is the mechanism behind?
Note: Im using hibernate caching level 2.
- In case I don't want to see that trace logs. I mean I just get Node data only. How to do ?
Thanks for your help.
Sorry for my bad english :( Van
© Stack Overflow or respective owner