-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: Transactions with CMP
PostPosted: Sun Aug 20, 2006 12:37 pm 
Newbie

Joined: Fri Aug 18, 2006 11:54 am
Posts: 11
Hibernate version: 3.2.0.cr2
Name and version of the database you are using: MySQL 4.1

I'm inserting some data (about 12000 rows) in the DB:
Code:
     //...
    @PersistenceContext
    private EntityManager em;

    public void loadTeamFile() {
        //...
        while(it.hasNext()){
           //...
           Team t = new Team(/*...*/);
           em.persist(t);
           //...
        }
    }


The problem is that hibernate opens and reliases the connection after each persist(). So my EJB works really slow, and after a number (8-10 000 ) inserts an exception (actualy - different exceptions) may occur.

What can i do to avoid this?
I've tried to use
Code:
        em.getTransaction().begin()
        //...
        em.getTransaction().commit()

but this is not allowed for Container-Managed EntityManager...

Heere is the example log:
Code:
2006-08-20 20:31:09,402 DEBUG [org.hibernate.event.def.AbstractSaveEventListener] executing identity-insert immediately
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 1)
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2006-08-20 20:31:09,402 DEBUG [org.hibernate.SQL] insert into Team (razdel, kod) values (?, ?)
2006-08-20 20:31:09,402 DEBUG [org.hibernate.id.IdentifierGeneratorFactory] Natively generated identity: 12563
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 2)
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 1) (open ResultSets: 0, globally: 0)]
2006-08-20 20:31:09,402 DEBUG [org.hibernate.event.def.AbstractSaveEventListener] executing identity-insert immediately
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 1)
2006-08-20 20:31:09,402 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2006-08-20 20:31:09,402 DEBUG [org.hibernate.SQL] insert into Team (razdel, kod) values (?, ?)
2006-08-20 20:31:09,402 DEBUG [org.hibernate.id.IdentifierGeneratorFactory] Natively generated identity: 12564
2006-08-20 20:31:09,418 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 2)
2006-08-20 20:31:09,418 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2006-08-20 20:31:09,418 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 1) (open ResultSets: 0, globally: 0)]


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 20, 2006 1:29 pm 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
use a connection pool

_________________
Emmanuel


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 20, 2006 1:38 pm 
Newbie

Joined: Fri Aug 18, 2006 11:54 am
Posts: 11
Sorry for "newbie" qestion, but i though connection pool is provided to me by a container (JBoss)...
Do you mean I have to use Application-Managed Entity Management pattern?
Like
Code:
@PersistenceUnit
EntityManagerFactory emf;
//...
EntityManager em = emf.createEntityManager();


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 20, 2006 1:49 pm 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
if you use JBoss AS and a data source the connection pool is set up. So the connection release is a logical operation which is pretty fast if you work inside the same transaction

_________________
Emmanuel


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 20, 2006 2:06 pm 
Newbie

Joined: Fri Aug 18, 2006 11:54 am
Posts: 11
Yes, I'm using JBoss AS.

For me releasing and obtaining connection 10 000 times is not very logical even if one operation is fast.
But speed is not the only problem. I have strange exceptions after a number of inserts...

So, is there a way to make one transaction to submit all this updates in a batch?

I've tried to use EntityManagerFactory (as in my previous post), but have the same exception as with Container-Managed EM.
Code:
Caused by: java.lang.IllegalStateException: JTA EntityManager cannot access a transactions
   at org.hibernate.ejb.AbstractEntityManagerImpl.getTransaction(AbstractEntityManagerImpl.java:278)
   at com.fonbet.lineconfig.ConfigManagerBean.loadTeamFile(ConfigManagerBean.java:69)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
   at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
   at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 20, 2006 2:27 pm 
Newbie

Joined: Fri Aug 18, 2006 11:54 am
Posts: 11
As for the strange exceptions I've mentioned eariler, I have one example:
Code:
2006-08-20 22:20:50,182 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2006-08-20 22:20:50,182 DEBUG [org.hibernate.SQL] insert into Team (razdel, kod) values (?, ?)
2006-08-20 22:20:50,182 DEBUG [org.hibernate.id.IdentifierGeneratorFactory] Natively generated identity: 8537
2006-08-20 22:20:50,182 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2006-08-20 22:20:50,197 DEBUG [org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection
2006-08-20 22:20:50,197 DEBUG [org.hibernate.jdbc.ConnectionManager] releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
2006-08-20 22:20:50,697 DEBUG [org.hibernate.event.def.AbstractSaveEventListener] executing identity-insert immediately
2006-08-20 22:20:50,697 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2006-08-20 22:20:50,697 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2006-08-20 22:20:56,760 DEBUG [org.hibernate.util.JDBCExceptionReporter] Cannot open connection [???]
org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=pasha/32, BranchQual=, localId=32]; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=pasha/32, BranchQual=, localId=32])
   at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:94)
   at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
   at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
   at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
   at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
   at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:69)
   at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:30)
   at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2044)
   at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2481)
   at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:47)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
   at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
   at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
   at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
   at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:620)
   at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:594)
   at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:598)
   at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:186)
   at com.fonbet.lineconfig.ConfigManagerBean.loadTeamFile(ConfigManagerBean.java:87)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
   at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
   at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
   at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:181)
   at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:79)
   at $Proxy160.loadTeamFile(Unknown Source)
   at org.apache.jsp.configManager_jsp._jspService(configManager_jsp.java:88)
   at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
   at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
   at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
   at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
   at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
   at java.lang.Thread.run(Thread.java:595)
Caused by: javax.resource.ResourceException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=pasha/32, BranchQual=, localId=32]
   at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:290)
   at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:379)
   at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:812)
   at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)
   ... 74 more
2006-08-20 22:20:57,666 WARN  [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: null
2006-08-20 22:20:57,666 ERROR [org.hibernate.util.JDBCExceptionReporter] Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=pasha/32, BranchQual=, localId=32]; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=pasha/32, BranchQual=, localId=32])

This happened after 8,537 successfull insterts to Team table and 17,072 to TeamName table (mentioned in other thread).


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 22, 2006 2:11 pm 
Newbie

Joined: Fri Aug 18, 2006 11:54 am
Posts: 11
I've checked it with hibernate 3.2cr3. The same problem with "Cannot open connection".
Also I've found related thread at JBoss forum.
http://www.jboss.com/index.html?module= ... ic&t=80413


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.