在ActiveRecord中,有一個更新的概念locking records以確保陳舊的對象不會保存到數據庫。ActiveAndroid:鎖定更新記錄?
在ActiveAndroid中是否有等價的功能?如果是這樣,有鏈接顯示如何做到這一點?如果沒有,最好的辦法是防止陳舊的對象被保存到數據庫中?
在ActiveRecord中,有一個更新的概念locking records以確保陳舊的對象不會保存到數據庫。ActiveAndroid:鎖定更新記錄?
在ActiveAndroid中是否有等價的功能?如果是這樣,有鏈接顯示如何做到這一點?如果沒有,最好的辦法是防止陳舊的對象被保存到數據庫中?
ActiveAndroid的概念爲beginTransaction() and endTransaction()
,它基本上與activeRecord
中的locking record
概念類似。通過使用beginTransaction()
,可以確保在訪問方法或數據的任何更改時,其他對象都不會干擾該過程。一旦執行endTransaction()
,該方法就會「解鎖」,其他對象可以開始與其交互。
事務服務於不同目的。事務通常用於批量更新/插入/刪除,以便全部成功或全部失敗。它也提高了這些操作的性能。它不會阻止更新舊的對象。 – WindsurferOak
請原諒我,如果我在這裏錯了,因爲我學習使用ActiveAndroid我自己,但據我所知activeAndroid映射到SQLite,它自己在讀,寫等數據庫時鎖定... – user2511882
是的,這是正確;但是,據我所知,仍然可以更新陳舊的數據。 – WindsurferOak
我不知道答案,但我正在做的是,在我的模型類中聲明唯一字段,並使用uniqueconflict替換舊記錄。
@Column(name = "userId", notNull = true,unique = true,onUniqueConflict = Column.ConflictAction.REPLACE)
private String userId;
你的意思是不保存重複? – user2511882
不完全。假設你查詢一個對象,A = Foo(1),然後查詢B = Foo(1)。您現在有兩個對象(A和B)表示id = 1的記錄。現在,如果您修改A然後保存,則B現在將變得陳舊,因爲它沒有對A進行的最新更改。 – WindsurferOak