8

DDD, her bir sunucu için depoyu belirtir, ancak Spring Data JPA'yı kucaklarken, yalnızca varlık başına arabirimi bildirdiğimizde yararları kaldırabiliriz. Bu empedans uyuşmazlığı nasıl çözülebilir?Domain-Driven Design depoları ve Spring Data olanlar arasında bir uyumsuzluk var mı?

Toplam depo içerisinde kapsüllenmiş depo ara yüzlerini denemeyi umuyorum, bu bir OK çözüm mü yoksa daha iyi bir şey mi? Verilen örnek için

: Customer agrega kök ve her varlık kendi depo arabirimleri sahip yararlanabilir nerede kişiler Demographics, Identification, AssetSummary vb gibidir. DDD'yi ihlal etmeden en iyi yol nedir?

cevap

13

... ama Bahar Veri JPA kucaklayan biz kişilik başına arayüzünü beyan yalnızca, kazancını artırabilen ...

yanlış ve ben bu izlenimi nereden öğrenmek istiyorum

(his Yorum yapmak için ücretsiz). Spring Veri havuzları, alan modeli tasarımınıza tam olarak aynı yaklaşımı beklemektedir: etki alanı modelinizdeki toplamları tanımlarsınız ve yalnızca tam olarak bunlar için depo arabirimleri oluşturur.

Yapmanız gereken tek şey DDD konseptini etki alanı modelinize uygulamak olduğunuzu iddia ediyorum. Toplu bir kök olmayan varlıklar için depo arayüzlerini bildirme. Aslında, bunları açıklamış olsaydınız, esas olarak bir temel kavramını koparırsınız, çünkü asıl kök, diğer varlıklar kendileri için tanımlanan depo arabirimi üzerinden, yani toplam kök kullanılmadan manipüle edilebildiğinden, artık iş kısıtlamalarını kontrol edemez.

Bu Spring Data example numaralı belgede doğru uygulanmış bir örneğe bakın. İçinde, Order bir toplam köktür, LineItem sadece sıradan bir varlıktır. Aynı durum Customer (kök) ve Address (normal varlık) için de geçerlidir. Depo arayüzleri sadece agregalı kökler için mevcuttur. Aslında, bu ilişki, ilk önce Spring Data REST gibi modülleri oluşturan temel prensiptir. Sadece agregasyon kökleri için HTTP kaynaklarını ortaya çıkarır, oluşturulan temsiller içindeki sıradan varlıkları yerleştirir ve diğer kümelere bağlantılar oluşturur.

+0

Cevabınız için teşekkür ederiz. Soru, bir kümenin, bir araya getirilmiş kökle ilişkisel bir eşlemeye sahip olmayan veya gereksinim duymayan bir yığının parçası olarak ele alınma olasılığını göz önünde bulundurmak için bana düşünüldüğünde, bence bu, yığma için özel depo impl elde edilebilir. Kök, bunu kabul ediyorum yanlış mıyım? –

+0

Böyle bir özel eklenti ile gitmem gerektiğinde, daha fazla ya da az Bahar Verilerinin avantajlarından vazgeçmeye başlıyorum (yukarıdaki varsayım geçerliyse) –

+1

Başka bir yığında * yer almayan varlıklar elbette depolarını alabilirler, çok. Ben genellikle onları, toplu kökün kendisi olan varlık ile bir tek varlık topluluğu olarak düşünürüm. Bu kalıbın önemli bir kısmı, bir toplamda bulunan varlıklar topluluğun dışında manipüle edilmemesidir. Bu nedenle, her JPA varlığı kendi tarafında bir Spring Data deposu almaz. –

İlgili konular