Solusi
Oke, misteri terpecahkan! Ternyata saya perlu memanggil secara eksplisit siram () pada sesi objek.
Jawaban berikut memberi saya petunjuk:
Hibernasi tidak menyimpan Objek di Database?
Contoh
Berikut adalah contoh kerja (perhatikan session.flush()
yang harus dipanggil sebelum menutup sesi ):
@Service
public class TableOneDaoImpl extends HibernateDaoSupport implements TableOneDao {
@Override
public void save(TableOne tableOne) throws Exception {
Session session = null;
try {
session = getSessionFactory().openSession();
session.save(tableOne);
session.flush();
} catch (Exception e) {
throw new Exception("Could not save tableOne!", e);
} finally {
if (session != null) {
session.close();
}
}
}
}
Dan sekali lagi, saat menggunakan MySQL berfungsi dengan baik tanpa pembilasan eksplisit.
Pengamatan menarik
Aplikasi web uji yang disebutkan di atas menggunakan Hibernate murni konfigurasi dan Hibernate SessionFactory (yaitu tanpa persistence.xml dan JPA entityManager ). Tetapi saya juga memiliki aplikasi pengujian yang sama yang dikonfigurasi untuk menggunakan JPA . Dan dalam aplikasi itu semuanya juga berfungsi tanpa pembilasan eksplisit baik dengan MySQL dan PostgreSQL.