|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Eclipselink caching behaviourI'm working on understanding the
eclipselink cache, and I still have quite a way to go J I have an entity with a single column
primary key (String). If i use "em.find(key)", this is cached, so
that repeated lookups don't go to the database. If i create a Query referring
the key ("select o from IkbPage o where key = ?1"), and then
use query.getSingleResult(), it is not cached, and I see multiple identical
queries. Is there a configuration option I need to
switch on? Or is this just not possible? Eirik _______________________________________________ eclipselink-users mailing list eclipselink-users@... https://dev.eclipse.org/mailman/listinfo/eclipselink-users |
|
|
Re: Eclipselink caching behaviourMay be following code snippet helps you
I have positive result with the following usage @Entity @Cache ( type=CacheType.WEAK, expiry=600000, alwaysRefresh =true, disableHits=false, coordinationType=CacheCoordinationType.SEND_NEW_OBJECTS_WITH_CHANGES ) @NamedQueries( { @NamedQuery(name = "CodFlexCodesB.findAll", query = "select o from CodFlexCodesB o"), @NamedQuery(name = "CodFlexCodesB.timeValidity", query = "SELECT em FROM CodFlexCodesB em " + "WHERE em.codFlexCodeSystemsB.id = :id AND " + "(em.startDate <= :endDate) AND (em.endDate >= :startDate OR em.endDate IS NULL) ", hints = @QueryHint(name=QueryHints.CACHE_USAGE, value=CacheUsage.ConformResultsInUnitOfWork ) ) }) Yes, if I see my log it does shows the query being hit many time. I think its querying object not DB (please verify. It should you show the same thing in Hibernate also) [Eclipselink team please verify my assumptons] EL Fine]: 2008.08.05 11:35:30.843--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--SELECT ID, CODE, CREATED_BY, CREATION_DATE, DESCR, INSTALLED_FLAG, LAST_UPDATED_BY, LAST_UPDATED_DATE, LAST_UPDATE_LOGIN, NLS_LANGUAGE, OBJECT_VERSION_NUMBER, STATUS_ID FROM OHI_LANGUAGES [EL Fine]: 2008.08.05 11:35:30.859--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--SELECT COD_FLEX_CODE_S1.NEXTVAL FROM DUAL [EL Fine]: 2008.08.05 11:35:30.875--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--SELECT ID FROM COD_FLEX_CODE_SYSTEMS_B WHERE (ID = ?) bind => [10001] [EL Fine]: 2008.08.05 11:35:30.875--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--INSERT INTO COD_FLEX_CODES_B (ID, CREATED_BY, CREATION_DATE, END_DATE, LAST_UPDATED_BY, LAST_UPDATED_DATE, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER, START_DATE, VALUE_DATE1, VALUE_DATE2, VALUE_DATE3, VALUE_DATE4, VALUE_DATE5, VALUE_DATE6, VALUE_DATE7, VALUE_DATE8, VALUE_NR1, VALUE_NR2, VALUE_NR3, VALUE_NR4, VALUE_NR5, VALUE_NR6, VALUE_NR7, VALUE_NR8, FCSY_ID, FLCO_ID8, FLCO_ID3, STATUS_ID, FLCO_ID1, FLCO_ID7, FLCO_ID9, FLCO_ID4, FLCO_ID6, FLCO_ID2, FLCO_ID5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [9548, 1217928930828, 2008-08-05 11:35:30.828, 2008-08-15 11:35:30.828, 1217928930828, 2008-08-05 11:35:30.828, test, 1, 2008-08-05 11:35:30.828, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 10001, null, null, null, null, null, null, null, null, null, null] [EL Fine]: 2008.08.05 11:35:30.875--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--INSERT INTO COD_FLEX_CODES_TL (LANGUAGE, CREATED_BY, CREATION_DATE, KEY_VALUE, LAST_UPDATED_BY, LAST_UPDATED_DATE, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER, SOURCE_LANG, VALUE_CHAR1, VALUE_CHAR2, VALUE_CHAR3, VALUE_CHAR4, VALUE_CHAR5, VALUE_CHAR6, VALUE_CHAR7, VALUE_CHAR8, ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [US, 1217928930828, 2008-08-05 11:35:30.828, GMTEst, 1217928930828, 2008-08-05 11:35:30.828, test, 1, NL, null, null, null, null, null, null, null, null, 9548] [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--INSERT INTO COD_FLEX_CODES_TL (LANGUAGE, CREATED_BY, CREATION_DATE, KEY_VALUE, LAST_UPDATED_BY, LAST_UPDATED_DATE, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER, SOURCE_LANG, VALUE_CHAR1, VALUE_CHAR2, VALUE_CHAR3, VALUE_CHAR4, VALUE_CHAR5, VALUE_CHAR6, VALUE_CHAR7, VALUE_CHAR8, ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [NL, 1217928930828, 2008-08-05 11:35:30.828, GMTEst, 1217928930828, 2008-08-05 11:35:30.828, test, 1, NL, null, null, null, null, null, null, null, null, 9548] [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--SELECT t1.ID, t1.CREATED_BY, t1.CREATION_DATE, t1.END_DATE, t1.LAST_UPDATED_BY, t1.LAST_UPDATED_DATE, t1.LAST_UPDATE_LOGIN, t1.OBJECT_VERSION_NUMBER, t1.START_DATE, t1.VALUE_DATE1, t1.VALUE_DATE2, t1.VALUE_DATE3, t1.VALUE_DATE4, t1.VALUE_DATE5, t1.VALUE_DATE6, t1.VALUE_DATE7, t1.VALUE_DATE8, t1.VALUE_NR1, t1.VALUE_NR2, t1.VALUE_NR3, t1.VALUE_NR4, t1.VALUE_NR5, t1.VALUE_NR6, t1.VALUE_NR7, t1.VALUE_NR8, t1.FCSY_ID, t1.FLCO_ID8, t1.FLCO_ID3, t1.STATUS_ID, t1.FLCO_ID1, t1.FLCO_ID7, t1.FLCO_ID9, t1.FLCO_ID4, t1.FLCO_ID6, t1.FLCO_ID2, t1.FLCO_ID5 FROM COD_FLEX_CODE_SYSTEMS_B t0, COD_FLEX_CODES_B t1 WHERE ((((t0.ID = ?) AND (t1.START_DATE <= ?)) AND ((t1.END_DATE >= ?) OR (t1.END_DATE IS NULL))) AND (t0.ID = t1.FCSY_ID)) bind => [10001, 2008-08-15 11:35:30.828, 2008-08-05 11:35:30.828] Size 1 [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--SELECT t1.ID, t1.CREATED_BY, t1.CREATION_DATE, t1.END_DATE, t1.LAST_UPDATED_BY, t1.LAST_UPDATED_DATE, t1.LAST_UPDATE_LOGIN, t1.OBJECT_VERSION_NUMBER, t1.START_DATE, t1.VALUE_DATE1, t1.VALUE_DATE2, t1.VALUE_DATE3, t1.VALUE_DATE4, t1.VALUE_DATE5, t1.VALUE_DATE6, t1.VALUE_DATE7, t1.VALUE_DATE8, t1.VALUE_NR1, t1.VALUE_NR2, t1.VALUE_NR3, t1.VALUE_NR4, t1.VALUE_NR5, t1.VALUE_NR6, t1.VALUE_NR7, t1.VALUE_NR8, t1.FCSY_ID, t1.FLCO_ID8, t1.FLCO_ID3, t1.STATUS_ID, t1.FLCO_ID1, t1.FLCO_ID7, t1.FLCO_ID9, t1.FLCO_ID4, t1.FLCO_ID6, t1.FLCO_ID2, t1.FLCO_ID5 FROM COD_FLEX_CODE_SYSTEMS_B t0, COD_FLEX_CODES_B t1 WHERE ((((t0.ID = ?) AND (t1.START_DATE <= ?)) AND ((t1.END_DATE >= ?) OR (t1.END_DATE IS NULL))) AND (t0.ID = t1.FCSY_ID)) bind => [10001, 2008-08-26 11:35:30.89, 2008-08-16 11:35:30.89] >>>>><<<<< false Size 0 [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--SELECT t1.ID, t1.CREATED_BY, t1.CREATION_DATE, t1.END_DATE, t1.LAST_UPDATED_BY, t1.LAST_UPDATED_DATE, t1.LAST_UPDATE_LOGIN, t1.OBJECT_VERSION_NUMBER, t1.START_DATE, t1.VALUE_DATE1, t1.VALUE_DATE2, t1.VALUE_DATE3, t1.VALUE_DATE4, t1.VALUE_DATE5, t1.VALUE_DATE6, t1.VALUE_DATE7, t1.VALUE_DATE8, t1.VALUE_NR1, t1.VALUE_NR2, t1.VALUE_NR3, t1.VALUE_NR4, t1.VALUE_NR5, t1.VALUE_NR6, t1.VALUE_NR7, t1.VALUE_NR8, t1.FCSY_ID, t1.FLCO_ID8, t1.FLCO_ID3, t1.STATUS_ID, t1.FLCO_ID1, t1.FLCO_ID7, t1.FLCO_ID9, t1.FLCO_ID4, t1.FLCO_ID6, t1.FLCO_ID2, t1.FLCO_ID5 FROM COD_FLEX_CODE_SYSTEMS_B t0, COD_FLEX_CODES_B t1 WHERE ((((t0.ID = ?) AND (t1.START_DATE <= ?)) AND ((t1.END_DATE >= ?) OR (t1.END_DATE IS NULL))) AND (t0.ID = t1.FCSY_ID)) bind => [10001, 2008-07-25 11:35:30.89, 2008-07-26 11:35:30.89] Size 0 [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--DELETE FROM COD_FLEX_CODES_TL WHERE ((ID = ?) AND (LANGUAGE = ?)) bind => [9548, US] [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--DELETE FROM COD_FLEX_CODES_TL WHERE ((ID = ?) AND (LANGUAGE = ?)) bind => [9548, NL] [EL Fine]: 2008.08.05 11:35:30.890--ClientSession(2347637)--Connection(30283254)--Thread(Thread[main,5,main])--DELETE FROM COD_FLEX_CODES_B WHERE (ID = ?) bind => [9548]
|
|
|
Re: Eclipselink caching behaviourBy default only the find() operation will get a cache hit, queries will always go to the database.
You can allow a query to get a cache hit using the "eclipselink.query-type"="ReadObject" query hint.
James Sutherland EclipseLink, TopLink Wiki: EclipseLink, TopLink Forums: TopLink, EclipseLink Book: Java Persistence |
|
|
compact JPA jar file for distribution ?Hello,
Javawebstarted swing app using JPA dont need server related code with its xsd files etc. Are there any plans for such a compact jar file at least as build option , that only contains what an embedded JPA client needs ?. Using a custom "masking" classloader i have tracked the loaded classes, resources in runtime and saved it to a a custom jar file , and there is a noticable difference in size. Problem is i need to cover all possible usage cases that can happen with error handling etc inorder for this to be a safe way to do it. Its hard to know for sure that i managed to do that. Hence my request. regards gustav _______________________________________________ eclipselink-users mailing list eclipselink-users@... https://dev.eclipse.org/mailman/listinfo/eclipselink-users |
| Free embeddable forum powered by Nabble | Forum Help |