私はhibernateを使用しています。レコードを追加しようとすると、テーブルが削除されて再び追加されます。それは決して既存のテーブルを使用してそれを変更します。Hibernateをドロップテーブルにしない方法
これは私の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>
これは私がデータを保存する方法である:
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
//...
session.save(newrecord)
session.getTransaction().commit();
セッションに既存のデータベースの内容を読み込ませる方法はありますか?アプリケーションの実行が停止した後にデータベースに値があり、アプリケーションを再起動すると、データベースに既にあるものの上にレコードを追加することができます。 – Sujen
私の答えをもう一度読んで、リファレンスマニュアルを読んでください。 hibernate.hbm2ddl.auto = autoを使用すると、セッションファクトリを作成するたびにスキーマを更新するようにhibernateに指示します。それでテーブルを作り直します。これは、空のデータベースを使用した迅速なテストに役立ちます。保存したいデータがある場合は、スキーマを手動で変更し、この設定オプションを設定ファイルから削除してください。 –
オハイオ州大丈夫、私は財産がデータベースからコンテンツを再作成する代わりに(私がどこか他の場所から読んだもので、私が思ったものの反対であると思われる)内容を保持するために使用されていると思ったので混乱しました。ありがとう、私はチャンスを得るときあなたのソリューションを試してみます。 – Sujen