This week's book giveaway is in the Android forum.
We're giving away four copies of Head First Android and have Dawn & David Griffiths on-line!
See this thread for details.
The moose likes Other Application Frameworks and the fly likes Problem inserting to Database Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Head First Android this week in the Android forum!
JavaRanch » Java Forums » Frameworks » Other Application Frameworks
Bookmark "Problem inserting to Database" Watch "Problem inserting to Database" New topic

Problem inserting to Database

Manju Singh

Joined: Feb 23, 2005
Posts: 27
I am trying to insert the record to DB using org.springframework.orm.hibernate3.HibernateTempla te. Everything is going fine no error on the console but when I try to see the record in the DB no record exists.(I am not using datasource.)

But, when I try to insert the record using pure Hibernate API it is working fine. Below is the code.

* SessionFactory sessionFactory = new Configuration().configure ().buildSessionFactory ();
* Session session = sessionFactory.openSession ();
* Transaction t = session.beginTransaction();
* t.begin();
* session.persist(empdata);
* t.commit();

Now below is the code from Spring

Below is my applicationcontext.xml

<bean id="MyTemplate" class="org.springframework.orm.hibernate3.Hibernat eTemplate">
<property name="sessionFactory"> <ref bean="MySessionFactory"/></property>

<bean id="MySessionFactory" class="org.springframework.orm.hibernate3.LocalSes sionFactoryBean">

<property name="mappingResources">

<property name="hibernateProperties">
<prop key="hibernate.connection.driver_class"> xx.JDBCDriver</prop>
<prop key="hibernate.connection.password">tiger</prop>
<prop key="hibernate.connection.url">jdbc://...</prop>
<prop key="hibernate.connection.username">scott</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.DB2D ialect</prop>

In the Java Prog

HibernateTemplate hTemplate = (HibernateTemplate)EmpBeanFactory.getBean("MYConte xt","MyTemplate");
hTemplate.flush(); // tried with/without using flush

Interstingly, when I try to retrieve the record from the Database, it is going fine. I can iterate through all the records.

List res = rmTemplate.find("From emp e");
System.out.println("Number of records fetched " + res.size());

It is printing 22 records on the console.

I did one more test, like before inserting to DB I fetched the records it is 22. After insert it is printing 23 but when look into db its only 22. Record is somehow not committing to DB but it in the Session.

I know somewhere I am missing something. Could anybody please help me to figure out this.
Sabarish Sasidharan
Ranch Hand

Joined: Aug 29, 2002
Posts: 73
If you are running this within a transaction and a runtime exception occurs, then the transaction will be rolled back. Are you sure you are not swallowing the exception somewhere?

Sab<br /> <br />Perfection does not come from belief or faith. Talk does not count for anything. Parrots can do that. Perfection comes through selfless work.<br />Swami Vivekananda
Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15302

Originally posted by Sabarish Sasidharan:
If you are running this within a transaction and a runtime exception occurs, then the transaction will be rolled back. Are you sure you are not swallowing the exception somewhere?

I'd bet Sabarish is on the right track. Springs exceptions must be caught or they are swallowed. Surround all your db related work in a try/catch block and see what you get.

GenRocket - Experts at Building Test Data
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
subject: Problem inserting to Database
It's not a secret anymore!