SORU
9 Temmuz 2009, PERŞEMBE


Neden görünümünde hazırda açık oturum kötü bir uygulama olarak kabul edilir?

Ve ne tür bir alternatif stratejiler LazyLoadExceptions kaçınmak için kullanıyor musunuz?

Görünümünde açık oturum sorunları var anlıyorum:

  • Katmanlı uygulamalar farklı jvm içinde çalışıyor
  • İşlemler sadece sonunda kararlıyız, ve büyük ihtimalle sonuç yine istiyorum.

Ama, eğer uygulama tek bir vm üzerinde çalışan olduğunu biliyorsan neden görünümünde açık bir oturum kullanarak acıyı strateji değil mi?

CEVAP
9 Temmuz 2009, PERŞEMBE


Muhtemelen ilklenmemiş Vekiller, özellikle koleksiyonları göndermek için, görünümünde katman ve tetikleme hazırda oradan yükleme her iki bakış performans ve anlayışlı bir noktadan sonra rahatsız edici olabilir.

Anlayış:

Kullanarak OSİV 'kirleten' görünüm endişeleri veri erişim katmanı. ile ilgili katman

Görünüm katmanı tembel yükleme, ama muhtemelen veri Erişim Katmanı olduğunda oluşabilir HibernateException işlemek için hazırlamak değil.

Performans:

OSİV tug uygun bir varlık halının altına yükleme eğilimi - koleksiyonlar veya varlıklar tembel ( belki N 1) başlatıldığını olduğunu fark ediyorsun. Daha fazla rahatlık, daha az kontrol.


Güncelleme:bu konu ile ilgili daha geniş bir tartışma için The OpenSessionInView antipattern bkz. Yazarın üç önemli nokta listeler:

  1. her tembel başlatma her varlık N 1 sorgu gerekir, N tembel dernekler sayısıdır sorgu bir anlam alacak. Eğer ekranınızın tablo Verisi sunar, Uyku günlüğü okuma gerektiği gibi yapmazsanız, bu büyük bir ipucu
  2. bu Sunum Katmanı DB ile tırnaklarınızı kirletecek beri tamamen katmanlı mimari zedeler. Bu kavramsal bir dümen, katlanabilirim ama bir sonuç yok
  3. son ama en az değil, eğer bir özel durum oluşur ise getirilirken oturum sırasında meydana gelecek yazı Sayfası: mevcut temiz hata sayfası için kullanıcı ve tek şey yapabileceğini yazma bir hata iletisi vücut

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • androidandme

    androidandme

    10 Mart 2009
  • L- Crysis

    L- Crysis

    30 Aralık 2011
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007