Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make Hibernate not drop tables

Tags:

hibernate

I am using hibernate and whenever I try to add a record it drops the table and adds it again. It never uses the existing table and make changes on that.

This is the relevant part of my hibernate.cfg.xml:

<hibernate-configuration>
<session-factory>
  <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
  <property name="hibernate.connection.url">jdbc:derby://localhost:1527/sample</property>
  <property name="hibernate.connection.username">user</property>
  <property name="hibernate.connection.password">password</property>
  <property name="hibernate.connection.pool_size">10</property>
  <property name="show_sql">true</property>
  <property name="dialect">org.hibernate.dialect.DerbyDialect</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <property name = "current_session_context_class">thread</property>
  <!-- Mapping the entities -->
<mapping class="inputDetails.Table1"/>
<mapping class="inputDetails.Table2"/>


  <!--mapping resource="contact.hbm.xml"/-->
</session-factory>
</hibernate-configuration>

This is how I save data:

SessionFactory factory = new Configuration().configure().buildSessionFactory();
    Session session = factory.getCurrentSession();
    session.beginTransaction();
//...
session.save(newrecord)
session.getTransaction().commit();
like image 965
Sujen Avatar asked Jul 07 '11 13:07

Sujen


1 Answers

<property name="hibernate.hbm2ddl.auto">update</property>

tells hibernate to update the database schema each time the session factory is created.

And

SessionFactory factory = new Configuration().configure().buildSessionFactory();

builds a new session factory.

A SessionFactory should be built only once during the wole application lifetime. It should be created once and then reused. Have you read the hibernate reference manual?

like image 170
JB Nizet Avatar answered Nov 15 '22 23:11

JB Nizet