2009-03-24 27 views
43

Gerçekten hiç bir örnek görmedim, ancak bunların veri tabanı içindeki varlık varlık tablosuna kaydedildiğini varsayalım.Değer Nesneleri veritabanında nasıl saklanır?

Ie. Bir Şahıs/toplu bir root'um ve karşılık gelen bir Kişi tablosum varsa, Adres adında bir Değer Nesnesi olsaydı, bu Değerler tablosunda Adres değerleri kaydedilirdi!

Bir Adrese sahip Şirket vb. Gibi başka varlıklara sahip olduğum bir etki alanı için anlamlı mı?

(Şu anda bir proje yönetim uygulaması yazma ve DDD içine almaya çalışıyorum)

cevap

84

Size tarif ettik çok nedenlerden dolayı, ayrı bir tabloda değer Nesneleri saklamak için Tamam. Ancak, Yanlışları VO'lar olarak yanlış anladığınızı düşünüyorum - bu kalıcı bir endişe değil.

İşte bir örnek:

bir Şirket ve Kişi aynı posta Adres olduğunu varsayalım. Bu ifadelerden hangileri geçerli kabul edilir?

  1. "Ben Company.Address değiştirirseniz, o Person.Address etkiler olmamalıdır"
"Ben Company.Address değiştirirseniz, ben Person.Address otomatik bu değişiklikleri almak istiyorum" doğrudur

ise Adres bir Varlık olabilir ve bu nedenle o var sahiptir gerektiğini wn tablo

, doğruysa Adres bir Değer Nesne olmalıdır. Ana varlık tablosunda bir bileşen olarak saklanabilir veya kendi tablosu (daha iyi veritabanı normalleştirmesi) olabilir.

Gördüğünüz gibi, Adresin nasıl kalıcı olduğunu Varlık/VO semantiği ile hiçbir ilgisi yoktur.

7

Çoğu geliştirici, veritabanında ilk önce başka bir şey düşünme eğilimindedir. DDD, kalıcılığın nasıl ele alındığını bilmiyor. Bununla başa çıkmak için depoya kalmış. Bir xml, sql, text dosyası, vb. Gibi davranabilirsiniz. Entities/aggregates/value nesneleri, alanla ilgili kavramlardır.

Vijay Patel açıklaması mükemmel.

2

Eric Evans kitabı ve mükemmel dddsample Kargo projesi ile DDD'yi öğrenmeye başladım. Alan Modeli tabakasında bu nüans kod uygulanmasında farkını hayata isteyen (benim gibi) O yüzden

http://dddsample.sourceforge.net/ diyebilirim:

overidded yöntem Eşittir ve/veya sameIdentityAs/SameValueAs (Entity ve ValueObject arayüzünden) bence ifadelerinin yeri.

Bu sadece benim duygudur :)

ilginç düşünüyorum da bu okumayı oluyor:

http://martinfowler.com/bliki/ValueObject.html

İlgili konular