Bir keresinde bu üçü arasındaki fark hakkında bir soru gelmişti. Ben de cevabı başkalarına da faydası olabilir diye burada da yayınlamaya karar verdim.
Daha önce XPO‘dan bahsetmiştim. XPO’da nesnelerimiz aracılığıyla verilerimizi veritabanına ekleyebilmek için nesnelerimizin kalıcı yani persistent olması gerekmektedir. Sınıflarımızı kalıcı yani persistent yapabilmek için XPObject, XPBaseObject, XPCustomObject’ten birinden türetmemiz gerekmektedir. Bunların türediği temelde bulunan yapı ise XPBaseObject’tir.
XPObject,XPLiteObject,XPCustomObject XPBaseObject’ten türemektedir. Bunların arasında belirli özellik farkları var. Bu farktan bahsetmeden önce deferred deletion ve optimistic locking kavramlarını bilmeniz gerekmektedir. Optimistic locking birden fazla thread ile çalıştığınız durumlarda aynı veri üzerinde yapılan işlemlerde oluşabilecek problemleri engellemek için oluşturulmuş bir yapıdır. Deferred Deletion ise persistent bir nesneyi sildiğinizde xpo nun fiziksel olarak datayı hemen silmesini engeller ve silindi olarak işaretlenmesini sağlar. Deferred Deletion birden fazla nesnenin aynı nesneyi refere ettiği durumlarda veritabanı exceptionlarından korunmamızı sağlar. Bu dördünün bu özellikleri desteklemesi ile ilgili tabloda aşağıdaki gibidir.
Class Name Deferred Deletion Optimistic Locking
XPBaseObject – +
XPLiteObject – –
XPCustomObject + +
XPObject + +