簡體   English   中英

使用JPA刪除/刪除實體-保留在數據庫中

[英]Delete/Remove entities with JPA- remain in database

我的JPA實體:

@Entity
public class Test implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Lob
    public byte[] data;

}

現在,假設我在數據庫中存儲了100個條目,每個條目包含3 MB。

SELECT x FROM Test x返回100個條目,並且數據庫(在文件系統上)具有大約300 MB的大小(按預期)。

下一步是通過調用每個條目的entityManager.remove(test)來刪除所有100個條目。

SELECT x FROM Test x現在導致一個空表,但是數據庫仍然有300 MB的大小! 首先,如果我刪除表,數據庫將縮小到初始狀態。

這是怎么了 如果我刪除條目,它們真的不會被刪除嗎?

我嘗試使用JavaDB和Oracle XE,並且正在使用EclipseLink。

對我來說,我將查看JPA事務是否已成功提交,並從數據庫控制台中選擇實體計數以再次檢查。

如果表記錄沒有真正消失,則意味着刪除記錄可能會遇到一些麻煩。 嘗試提交事務或刷新它。

如果表記錄已經消失但數據庫磁盤空間仍然存在,則意味着它可能是數據庫空間關聯管理策略的原因,然后檢查數據庫配置以查看記錄消失后如何釋放空間。

數據庫不會物理刪除數據(顯然)。 何時以及如何完成取決於數據庫及其設置,例如,可能由某些文件大小閾值,手動緊湊命令或計划的維護任務觸發。 這完全獨立於JPA。

暫無
暫無

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

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