休止状態での私の理解によると(確認してください)
1- までsession.close()
に入手する場合は、しなければなりませんgetSessionFactory().openSession()
。
2- までsession.close()
に入手した場合は必要ありませんgetSessionFactory().getCurrentSession()
。commit()の後、自動的に閉じられます。
3- @2を使用する場合getSessionFactory().getCurrentSession()
、最後に commit() できるように、アクティブなトランザクション内ですべての DB アクティビティを実行する必要があります。
4- Hibernate はすべての保存、更新、および削除操作をキューに入れ、flush()操作、トランザクションのコミット、またはこれらの操作が発生したセッションの終了の後にのみデータベース サーバーに送信します。(javadoc に従って)
上記の点から、 1 & 4を考慮すると、次のコードが機能するはずです。
Session session = HibernateUtil.getSessionFactory().openSession();
AccountDetails ac = new AccountDetails();
//perform set operations
session.save(ac);
session.close();
System.out.println("new account stored.");
しかし、それは機能していません。つまり、スムーズに実行されますが、データベースに反映 (保存) されません。なぜですか? トランザクション内にコードを記述してコミットすると、それが保存されます。
基本的なことが欠けていると思います。どうか明らかにしてください。