簡體   English   中英

如何使用Hibernate更新應用程序Java中數據庫中的數據?

[英]How update the data from my database in my application java with Hibernate?

我是使用Hibernate的新手。 我的問題是:我正在開發桌面應用程序。 此應用程序用於不同的計算機。 當一台計算機將一個新用戶添加到我的數據庫中時,另一台計算機將無法看到該新用戶,除非他沒有關閉並再次打開該應用程序。

我不明白這是因為sessionFactory是不同的。

我使用Hibernate讀取用戶。

session = Settings.sessionFactory.openSession();

String selectSql = "select c.idClient, c.name FROM Clients c WHERE c.active=1 ORDER BY c.name";

Query query = session.createQuery(selectSql);
List<Object[]> listUsers = query.list();

for (Object[] data : listUsers) 
{
     cmbClient.addItem(new ItemCombobox(data[0].toString(), data[1].toString()));
}

每次操作完成后,嘗試打開和關閉交易

// Non-managed environment idiom Session sess = factory.openSession(); Transaction tx = null; try {
    tx = sess.beginTransaction();

    // do some work
    ...

    tx.commit(); } catch (RuntimeException e) {
    if (tx != null) tx.rollback();
    throw e; // or display error message } finally {
    sess.close(); }

參見: https : //docs.jboss.org/hibernate/orm/3.3/reference/en/html/transactions.html

首先是:

我不明白這是因為sessionFactory是不同的。

完全不正確。 我希望您能閱讀一些有關Java應用程序如何與數據庫通信的信息。

如果進行查詢,則會從數據庫中獲取數據,並將本地副本存儲在jvm(Java虛擬機)內存中。 因此,如果要從數據庫中獲取新的數據副本,則只需簡單地再次對數據庫進行查詢(在第二台計算機上完成添加用戶操作之后),而不用重置應用程序。

編輯:注意:SessionFactory在整個應用程序中僅使用一次。

它可能與Hibernate二級捕獲有關。 你可以在這里閱讀。 從這段文字:

二級緩存是在會話工廠范圍內創建的,可用於在使用該特定會話工廠創建的所有會話中使用。 這也意味着,一旦關閉會話工廠,與之關聯的所有緩存將消失,緩存管理器也將關閉。

您可以關閉第二級捕獲,但是您必須小心,因為這可能會影響您的性能。 如何在Hibernate中配置二級捕獲,您可以在此處閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM