-->
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: Am I using hibernate correctly
PostPosted: Fri Jun 09, 2006 9:03 am 
Newbie

Joined: Fri May 26, 2006 5:16 am
Posts: 13
I'm having some problems related to persistance that don't seem to be logical, so I guess i'm doing something wrong with the way I'm using hibernate.. :P

The thing is, Hibernate will usually only let me perform one insert,update or delete. Then it just stops updating the database, no errors at all.

And then there is the transactionmanager, that keeps timing out, giving me 500 errors, or keeps complaining about beeing marked for rollback. Only solution is to restart the jboss instance.

I've read up on both these problems, and have tried multiple configurations, but nothing seems to help. The problem started when I upgraded my Jboss to 4.0.4 to take advantage of the new jbossWS.

this is the console when I deploy my app:
Code:
14:43:51,876 INFO  [Configuration] Searching for mapping documents in jar: tmp30994trim.sar
14:43:51,878 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Activity.hbm.xml
14:43:51,923 INFO  [HbmBinder] Mapping class: valueObjects.Activity -> activity
14:43:51,930 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/ActivityLine.hbm.xml
14:43:51,959 INFO  [HbmBinder] Mapping class: valueObjects.ActivityLine -> activityline
14:43:51,967 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/ActivityType.hbm.xml
14:43:52,007 INFO  [HbmBinder] Mapping class: valueObjects.ActivityType -> activitytype
14:43:52,013 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Contact.hbm.xml
14:43:52,032 INFO  [HbmBinder] Mapping class: valueObjects.Contact -> contact
14:43:52,039 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Module.hbm.xml
14:43:52,051 INFO  [HbmBinder] Mapping class: valueObjects.Module -> module
14:43:52,053 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/ModuleAccess.hbm.xml
14:43:52,065 INFO  [HbmBinder] Mapping class: valueObjects.ModuleAccess -> moduleaccess
14:43:52,067 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Relation.hbm.xml
14:43:52,080 INFO  [HbmBinder] Mapping class: valueObjects.Relation -> relation
14:43:52,085 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/RelationType.hbm.xml
14:43:52,139 INFO  [HbmBinder] Mapping class: valueObjects.RelationType -> relationtype
14:43:52,144 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Resource.hbm.xml
14:43:52,178 INFO  [HbmBinder] Mapping class: valueObjects.Resource -> resource
14:43:52,185 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/ResourceCategory.hbm.xml
14:43:52,198 INFO  [HbmBinder] Mapping class: valueObjects.ResourceCategory -> resourcecategory
14:43:52,200 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/ResourceType.hbm.xml
14:43:52,219 INFO  [HbmBinder] Mapping class: valueObjects.ResourceType -> resourcetype
14:43:52,224 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Status.hbm.xml
14:43:52,237 INFO  [HbmBinder] Mapping class: valueObjects.Status -> status
14:43:52,241 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/SystemDefault.hbm.xml
14:43:52,257 INFO  [HbmBinder] Mapping class: valueObjects.SystemDefault -> systemdefault
14:43:52,259 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Unit.hbm.xml
14:43:52,275 INFO  [HbmBinder] Mapping class: valueObjects.Unit -> unit
14:43:52,276 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/UserGroup.hbm.xml
14:43:52,322 INFO  [HbmBinder] Mapping class: valueObjects.UserGroup -> usergroup
14:43:52,325 INFO  [Configuration] Found mapping document in jar: hibernate_hbm/Users.hbm.xml
14:43:52,346 INFO  [HbmBinder] Mapping class: valueObjects.Users -> users
14:43:52,390 WARN  [RootClass] composite-id class does not override equals(): valueObjects.ModuleAccess
14:43:52,391 WARN  [RootClass] composite-id class does not override hashCode(): valueObjects.ModuleAccess
14:43:52,393 INFO  [NamingHelper] JNDI InitialContext properties:{}
14:43:52,398 INFO  [DatasourceConnectionProvider] Using datasource: java:/PostgresDS
14:43:52,406 INFO  [SettingsFactory] RDBMS: PostgreSQL, version: 8.0.4
14:43:52,406 INFO  [SettingsFactory] JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.0 JDBC3 with SSL (build 314)
14:43:52,407 INFO  [Dialect] Using dialect: org.hibernate.dialect.PostgreSQLDialect
14:43:52,409 INFO  [TransactionFactoryFactory] Transaction strategy: org.hibernate.transaction.JTATransactionFactory
14:43:52,410 INFO  [NamingHelper] JNDI InitialContext properties:{}
14:43:52,411 INFO  [TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
14:43:52,413 INFO  [TransactionManagerLookupFactory] instantiated TransactionManagerLookup
14:43:52,413 INFO  [TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
14:43:52,415 INFO  [TransactionManagerLookupFactory] instantiated TransactionManagerLookup
14:43:52,416 INFO  [SettingsFactory] Automatic flush during beforeCompletion(): enabled
14:43:52,425 INFO  [SettingsFactory] Automatic session close at end of transaction: enabled
14:43:52,426 INFO  [SettingsFactory] JDBC batch size: 15
14:43:52,426 INFO  [SettingsFactory] JDBC batch updates for versioned data: disabled
14:43:52,427 INFO  [SettingsFactory] Scrollable result sets: enabled
14:43:52,428 INFO  [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
14:43:52,428 INFO  [SettingsFactory] Connection release mode: after_statement
14:43:52,429 INFO  [SettingsFactory] Default batch fetch size: 1
14:43:52,430 INFO  [SettingsFactory] Generate SQL with comments: disabled
14:43:52,431 INFO  [SettingsFactory] Order SQL updates by primary key: disabled
14:43:52,431 INFO  [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
14:43:52,432 INFO  [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
14:43:52,433 INFO  [SettingsFactory] Query language substitutions: {}
14:43:52,433 INFO  [SettingsFactory] Second-level cache: enabled
14:43:52,434 INFO  [SettingsFactory] Query cache: disabled
14:43:52,435 INFO  [SettingsFactory] Cache provider: org.hibernate.cache.HashtableCacheProvider
14:43:52,435 INFO  [SettingsFactory] Optimize cache for minimal puts: disabled
14:43:52,436 INFO  [SettingsFactory] Structured second-level cache entries: disabled
14:43:52,437 INFO  [SettingsFactory] Echoing all SQL to stdout
14:43:52,438 INFO  [SettingsFactory] Statistics: disabled
14:43:52,438 INFO  [SettingsFactory] Deleted entity synthetic identifier rollback: disabled
14:43:52,439 INFO  [SettingsFactory] Default entity-mode: pojo
14:43:52,460 INFO  [SessionFactoryImpl] building session factory
14:43:53,278 INFO  [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
14:43:53,279 INFO  [NamingHelper] JNDI InitialContext properties:{}
14:43:53,281 INFO  [Hibernate] SessionFactory successfully built and bound into JNDI [java:/hibernate/TRIMSessionFactory]


this is my jboss-service.xml file:
Code:
<server>
    <mbean code="org.jboss.hibernate.jmx.Hibernate" name="jboss.TRIM:name=HibernateSessionFactory">
        <!-- Wait for the Postgres Datasource to be defined -->
        <!-- <depends>jboss.jca:service=RARDeployer</depends> -->
        <!-- <depends>jboss.jca:service=LocalTxCM,name=PostgresDS</depends> -->
        <depends>jboss.jca:service=DataSourceBinding,name=PostgresDS</depends>
       
        <attribute name="DatasourceName">java:/PostgresDS</attribute>
        <attribute name="Dialect">org.hibernate.dialect.PostgreSQLDialect</attribute>
        <attribute name="Username">admin</attribute>
        <attribute name="Password">123456</attribute>
        <attribute name="SessionFactoryName">java:/hibernate/TRIMSessionFactory</attribute>
       
       
        <!--  We do want hibernate to look everywhere for mapping files-->
        <attribute name="ScanForMappingsEnabled">true</attribute>
       
        <!-- We also want to see the actual SQL -->
        <attribute name="ShowSqlEnabled">true</attribute>
       
        <!-- Second level caching   -->
        <attribute name="SecondLevelCacheEnabled">true</attribute>
        <attribute name="CacheProviderClass">org.hibernate.cache.EhCacheProvider</attribute>
        <attribute name="QueryCacheEnabled">true</attribute>
     
    </mbean>
</server>


And this is how I set up the sessionfactory:
Code:
package session;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;


public class HibernateSessionFactory {



   public static Session currentSession() throws HibernateException {
       InitialContext ctx;
       SessionFactory factory = null;
      try {
         ctx = new InitialContext();
         factory = (SessionFactory) ctx.lookup("java:/hibernate/TRIMSessionFactory");
      } catch (NamingException e) {
         e.printStackTrace();
      }       
       Session session = factory.openSession();
        return session;
    }

    public static void closeSession() throws HibernateException {
       InitialContext ctx;
        SessionFactory factory = null;
      try {
         ctx = new InitialContext();
         factory = (SessionFactory) ctx.lookup("java:/hibernate/TRIMSessionFactory");
         } catch (NamingException e) {
         e.printStackTrace();
      }
       Session session = factory.openSession();
        if (session != null) {
            session.close();
        }
    }

    /**
     * Default constructor.
     */
    private HibernateSessionFactory() {
    }

}



..and this is how I use it in a class:
Code:
     try {

         session = HibernateSessionFactory.currentSession();
         
         transaction = session.beginTransaction();
         
         Integer integerRelationID = ( Integer ) session.save( relation );
         

         transaction.commit();
         
         return integerRelationID;
         
      } catch (HibernateException hex) {


I'm guessing the problem is either with the way i use the sessionfactory, or the way I'm using it to create sessions/commit.

Anybody who can tell me what I'm doing wrong? Or what I should do different?
I'm also interrested in how I'm using the sessions/transactions, is it the best way when using an Mbean?

Regards


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 09, 2006 9:08 am 
Newbie

Joined: Fri May 26, 2006 5:16 am
Posts: 13
oops, noticed that the stacktrace wasn't consistent with the configuration.. the stack in the post above is with the entire second level cache section from the mbean configuration commented out.


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 09, 2006 11:40 am 
Regular
Regular

Joined: Mon May 22, 2006 2:30 pm
Posts: 74
My first question would be: "Why are you starting and ending your own transactions if you are using JBoss?" Are you not using CMT? Also, have you turned on Hibernate logging at the DEBUG level? That tells you exactly what Hibernate is doing, and would most likely provide some insight into what might be happening.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jun 12, 2006 3:03 am 
Newbie

Joined: Fri May 26, 2006 5:16 am
Posts: 13
Thanks for your reply.

I'm not really sure why I'm not using CMT, do you have a pointer to a good page where I can read about how to use it?

I'll look in to the debug setting as well, thanks.! :)


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jun 12, 2006 3:25 am 
Newbie

Joined: Fri May 26, 2006 5:16 am
Posts: 13
Ok, so if I understand this right.. there is no need for me to handle any transaction related stuff?

So I can skip the transaction = session.beginTransaction(); and transaction.commit(); ?

So how do I really open and close the session from the application then?



Code:
session = HibernateSessionFactory.currentSession();

// do some work

//then what?


do I need to flush or close, or does jboss handle that too?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jun 12, 2006 4:54 am 
Newbie

Joined: Fri May 26, 2006 5:16 am
Posts: 13
heh, replying to myself here, but..

Removing transaction handling from the application seems to have fixed the errors I got with the TransactionManager and rollback.

However, There is still no changes beeing done to the DB when I issue save(); or update();

Do I need a different strategy than the above when updating/saving objects to the database?

Also, I'm having a hard time figuring out how to set the logging level to DEBUG...
I've edited my log4j.properties file to look like this:

Code:
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.logger.org.apache.commons.digester=INFO
log4j.logger.org.hibernate=debug


what else do I need to do to get this to work?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 13, 2006 4:17 am 
Newbie

Joined: Fri May 26, 2006 5:16 am
Posts: 13
This seems to work, but is it an acceptable way to do it?

Code:
         session.getTransaction().begin();
         session.saveOrUpdate( in );
         session.getTransaction().commit();


Or should I expect exceptions in the long run?


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.