openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joel Halbert <j...@su3analytics.com>
Subject Re: How to disable caching?
Date Tue, 08 Feb 2011 15:49:27 GMT
Hi Mike,

I'm using the defaults, and setting 'partitionCount=3'

Is it possible that the connection is doing any caching of it's own?
There's no mention of this and it would seem to be beyond the remit of
it's function. 

I've decided to use C3P0 for pooling now. Is there any reason to prefer
DHCP given that it is the out of the box default with OpenJPA?

Joel

On Tue, 2011-02-08 at 09:42 -0600, Michael Dick wrote:
> Hi Joel,
> 
> Looks like we're doing the right thing. I see this pattern several times in
> the trace :
> 
> DEBUG - Found datasource1: datasource -672870675 from configuration.
> StoreContext: org.apache.openjpa.kernel.FinalizingBrokerImpl@c38157
> DEBUG - Executing query: select t from Test t
> DEBUG - <t 14892568, conn 16886931> executing prepstmnt 13312389 SELECT
> t0.ID, t0.NAME FROM TEST t0
> DEBUG - <t 14892568, conn 16886931> [1 ms] spent
> DEBUG - <t 14892568, conn 16886931> [0 ms] close
> DEBUG - Found datasource1: datasource -672870675 from configuration.
> StoreContext: org.apache.openjpa.kernel.FinalizingBrokerImpl@127ff0d
> DEBUG - Executing query: select t from Test t
> DEBUG - <t 14892568, conn 21860890> executing prepstmnt 29290924 SELECT
> t0.ID, t0.NAME FROM TEST t0
> DEBUG - <t 14892568, conn 21860890> [1 ms] spent
> DEBUG - <t 14892568, conn 21860890> [0 ms] close
> 
> The connection is being closed between each SELECT statement. The only thing
> we're reusing is the datasource which should be fine.
> 
> Have you set any BoneCP properties, or are you using the defaults?
> 
> 
> -mike
> 
> On Tue, Feb 8, 2011 at 9:07 AM, Joel Halbert <joel@su3analytics.com> wrote:
> 
> > Hi Mike,
> >
> > I've attached the log file generated with those log level settings.
> >
> > The test iterates a couple of times before I insert a row into the
> > database. This time the new record was picked up, but then I inserted
> > several new rows and they were not picked up on any of the subsequent
> > iterations.
> >
> > I was using the following config:
> >
> >
> > <properties>
> >        <property name="openjpa.jdbc.SynchronizeMappings"
> > value="buildSchema"/>
> >        <property name="openjpa.ConnectionDriverName"
> >  value="com.jolbox.bonecp.BoneCPDataSource" />
> >        <property name="openjpa.ConnectionProperties"
> > value="DriverClassName=com.mysql.jdbc.Driver,jdbcUrl=jdbc:mysql://localhost:3306/sitedelta,Username=sitedelta,Password=sitedelta,partitionCount=3"/>
> >
> >        <property name="openjpa.DataCache" value="false"/>
> >        <property name="openjpa.QueryCache" value="false"/>
> >
> >         <property name="openjpa.Log"
> > value="JDBC=TRACE,SQL=TRACE,RUNTIME=TRACE"/>
> > </properties>
> >
> >
> > On Tue, 2011-02-08 at 08:55 -0600, Michael Dick wrote:
> > > There's something odd here with BoneCP's thread affinity.
> > >
> > > Could you enable OpenJPA trace (eg <property name="openjpa.Log"
> > > value="JDBC=TRACE,SQL=TRACE"/> ). That should show all of our
> > interactions
> > > with the connection.
> > >
> > > Which database are you using?
> > >
> > > -mike
> > >
> > > On Tue, Feb 8, 2011 at 6:44 AM, Joel Halbert <joel@su3analytics.com>
> > wrote:
> > >
> > > > OK, so I was using BoneCP as the connection pool manager.
> > > > When I reverted to DHCP the problem vanished.
> > > >
> > > > Any ideas as to why this should be the case?
> > > >
> > > >
> > > >
> > > > On Tue, 2011-02-08 at 12:23 +0000, Joel Halbert wrote:
> > > > > Hi,
> > > > >
> > > > > I have performed a test to confirm that I don't seem to be able to
> > > > > disable caching (2.0.1).
> > > > >
> > > > > I've set the following properties:
> > > > >
> > > > >
> > > > > <property name="openjpa.DataCache" value="false"/>
> > > > > <property name="openjpa.QueryCache" value="false"/>
> > > > > <property name="openjpa.jdbc.QuerySQLCache" value="false"/>
> > > > >
> > > > >
> > > > >
> > > > > And I can see the correct values of these properties are logged out
> > when
> > > > > I start my app.
> > > > >
> > > > >
> > > > > When I create the entity Test.java  (below), and run it's main method
> > > > > (with the TEST table empty to start with) and then subsequently
> > manually
> > > > > insert into the test table:
> > > > >
> > > > > insert into TEST values (1,'a');
> > > > >
> > > > > it never picks up on the inserted values, even though I am creating
a
> > > > > new EntityManager for each iteration where I perform the query on
> > Test.
> > > > >
> > > > > What could I be doing wrong!?
> > > > >
> > > > > Thanks
> > > > > Joel
> > > > >
> > > > > --------------------------------------------------
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > package com.su3analytics.sitedelta.model;
> > > > >
> > > > >
> > > > >
> > > > > import java.util.List;
> > > > >
> > > > > import javax.persistence.Access;
> > > > > import javax.persistence.AccessType;
> > > > > import javax.persistence.Column;
> > > > > import javax.persistence.Entity;
> > > > > import javax.persistence.EntityManager;
> > > > > import javax.persistence.EntityManagerFactory;
> > > > > import javax.persistence.GeneratedValue;
> > > > > import javax.persistence.GenerationType;
> > > > > import javax.persistence.Id;
> > > > > import javax.persistence.Persistence;
> > > > > import javax.persistence.Table;
> > > > > import javax.persistence.TypedQuery;
> > > > >
> > > > > @Entity
> > > > > @Access(AccessType.PROPERTY)
> > > > > @Table(name="TEST")
> > > > > public class Test {
> > > > >
> > > > >       private int id;
> > > > >       private String name;
> > > > >
> > > > >       @Id
> > > > >       @GeneratedValue(strategy = GenerationType.IDENTITY)
> > > > >       @Column(name="ID")
> > > > >       public int getId() {
> > > > >               return id;
> > > > >       }
> > > > >       public void setId(int id) {
> > > > >               this.id = id;
> > > > >       }
> > > > >
> > > > >       @Column(name="NAME")
> > > > >       public String getName() {
> > > > >               return name;
> > > > >       }
> > > > >       public void setName(String name) {
> > > > >               this.name = name;
> > > > >       }
> > > > >
> > > > >       // SIMPLE TEST CASE
> > > > >       public static void main(String[] args) throws Exception {
> > > > >               EntityManagerFactory factory =
> > > > Persistence.createEntityManagerFactory("su3", null);
> > > > >               while(true) {
> > > > >                       EntityManager em =
> > factory.createEntityManager();
> > > > >                       TypedQuery<Test> q = em.createQuery("select
t
> > from
> > > > Test t", Test.class);
> > > > >                       List<Test> res = q.getResultList();
> > > > >                       for (Test t :res) {
> > > > >                               System.out.println(t.getId()+", " +
> > > > t.getName());
> > > > >                       }
> > > > >                       Thread.sleep(1000);
> > > > >                       em.close();
> > > > >               }
> > > > >       }
> > > > > }
> > > > >
> > > >
> > > >
> > > >
> >
> >



Mime
View raw message