2008-09-17 10 views
1

durum şu:Bir kullanıcı arabiriminde kullanmadan önce Hazırda Bekleme nesnesinin grafiğini yüklemenin en iyi yolu nedir?

  • Tanımlı bazı tembel yüküne sahip bir nesne grafik ile hazırda bağlamı var.
  • , UI'nizdeki Hazırda Bekletme nesnelerini numaralı telefona numaralı veriyi kopyalamak zorunda kalmadan kullanmak istersiniz. Farklı veri gerektiren farklı UI bağlamları vardır.
  • Veriler, her zaman grafiğinin tamamını yüklemeye istekli olmaktan büyük grafiğidir.

Nesne grafiğindeki tüm uygun nesneleri, daha fazla veri yüklemek için veritabanına geri dönmek zorunda kalmadan erişilebilmeleri için yapılandırılabilir bir şekilde yüklemek için en iyi yöntem nedir?

Herhangi bir yardım.

cevap

2

Müşteriye sahip olduğunuzu ve bir noktada Emirleri ile ilgili bir şeyiniz olduğunu ve belki de Emirleri için bir Bonus'u olduğunu varsayalım.

Sonra dememi sağlayacak bir akıcı arayüz ile bir Deposu tanımlamak bir şey gibi:

new ClientRepo().LoadClientBy(id) 
       .WithOrders() 
       .WithBonus() 
       .OrderByName(); 

Ve orada ihtiyacınız olan her şey müşterim var. Tercihen mevcut işlem için neye ihtiyacınız olacağını önceden bilmenizdir. Bu şekilde, veritabanına istenmeyen yolculuklardan kaçınabilirsiniz. (Takımınızdaki yeni devreler genellikle bunu yaparlar - bir özelliği çağırırlar ve aslında DB'ye yapılan bir çağrı olduğunun farkında olmamak gerekir)

1

Eğer bir webapp ve Spring kullanıyorsunuz, o zaman OpenSessionInViewFilter sorunlarınızın çözümü olabilir.

+1

veritabanı ", çünkü açık oturumun tam olarak ne yapacağız ... – jrudolph

+0

Ve bunun için tüm kullanım durumu bunu yapmak için sunucuya geri akıllı bir AJAX yapmak zorunda kalmadan kullanılabilir bir veritabanı bağlantısı olan menüler hangi GWT ile kullanıyor veritabanı sorgusu. –

1

Projelerimizde kullandığımız bir yaklaşım, sahip olduğunuz her görünüm için bir hizmet oluşturmaktır. Ardından görünüm, bu belirli görünüm için gereken alt grafiği alır ve her zaman veritabanına gönderilen sqls sayısını azaltmaya çalışır. Bu nedenle, n: 1 ile ilişkili nesneleri elde etmek için çok fazla bağlantı kullanıyoruz.

DB'ye doğrudan bağlı 2 katmanlı bir masaüstü uygulaması kullanıyorsanız, yalnızca nesneleri bağlı bırakabilir ve otomatik olarak istediğiniz zaman ek veri yükleyebilirsiniz. Aksi takdirde oturumuna onu takın ve Hibernate.initialize(Object entity, String propertyName)

ile ihtiyaç ilişkisi (Bellek yetersiz, doğru belki değil% 100) başlatmak zorunda geri gitmek zorunda kalmadan sorunu" çözer gelmez