2016-12-31 11 views
1

私はJava EEで安らかなAPIを作成しています。hibernateとcommit()を使用してデータベースにデータを保存する

しかし、(コミット私はクラスで

private static Session session = NewHibernateUtil.getSessionFactory().getCurrentSession(); 
private static org.hibernate.Transaction tx = session.beginTransaction(); 

を定義しているし、この方法では、私は

Person n = new Person(getPersonId() , name); 
      session.save(n); 
      tx.commit(); 

を呼び出しています)は、トランザクションを閉じ、そしてなしに文句を言わないのデータベースに保存されたデータをコミットします。コミットを使用せずにデータベースにデータを保存する最適な方法は何ですか?これは、遅いすべての要求に対して新しいトランザクションを作成することにつながります。

+0

※これは、すべてのリクエストに対して新しいトランザクションを作成することにつながります。遅い*:いいえ、遅くはありません。それを頭の中から取り出してください。 –

+0

また、Java EEコンテナを使用している場合は、JPAと宣言的なトランザクション処理を使用する必要があります。あなた自身で休止状態のトランザクションを開始し、コミットすることは、Java EEが避けることができる重要なことの1つです。 –

答えて

0

トランザクションとコミットを使用しないでください。保存後はフラッシュを使用してください。

+0

あなたは精緻化できますか? – Dingo

+0

session.save(n); session.flush();これはSQLトランザクションを作成しませんが、nレジスタを挿入する必要があります。 – user7358693

関連する問題