Uyku tembel-yük uygulama tasarımı
Spring çerçeve ve bildirimsel hareket sınır yetenekleri (örneğin, @Transactional) ile birlikte Hibernate kullanma eğilimindedir.
Hepimizin bildiği gibi, uyku gibi olmaya çalışırnon-invazivve gibişeffafmümkün olduğu, ancak bu kanıtlıyorbiraz daha zorluistihdam zamanlazy-loaded
ilişkiler.
Şeffaflık farklı düzeylerde tasarım seçenekleri bir dizi görüyorum.
- İlişkiler kurmalı tembel (, *1 ör*değil
- Bu tembel yükleme .. tüm fikir vioalites
- Başlatma koleksiyonları
Hibernate.initialize(proxyObj);
- Bu DAO-kaplin nispeten yüksek anlamına gelir
initialize
ile bir arabirim tanımlayabilirsiniz, ancak diğer uygulamalar herhangi bir eşdeğer sağlamak için garanti edilmez.
- Ekle işlem
Model
kalıcı nesneler kendilerini (dynamic proxy veya@Transactional
kullanarak)davranışları- Ben hiç @kalıcı nesneler kendileri için çalışan İşlem görünüyordu rağmen dinamik proxy yaklaşım denedim. Muhtemelen bu kış nedeniyle bir vekil olma işlemi.
- Hareketleri gerçekten vuku zaman kontrol kaybı
- Hem tembel, tembel, e API sağlar.,
loadData()
gloadDataWithDeps()
- Uygulama rutin olan istihdam bilmek güçleri, daha sıkı kavrama
- Yöntem taşma,
loadDataWithA()
, ....,loadDataWithX()
- Güç, örneğin, sadece
byId()
operasyon sağlayarak bağımlılıkları için arama- Gerektirir sürü olmayan nesne tabanlı rutinleri, örneğin,
findZzzById(zid)
vez.getY()
yerinegetYyyIds(zid)
sonra - Eğer hareketleri arasında büyük bir işleme yükü eğer orada bir koleksiyon tek tek her nesne getirmek için yararlı olabilir.
- Gerektirir sürü olmayan nesne tabanlı rutinleri, örneğin,
- Bir parçası olunuygulama@İşlem yerine *20 tek*
- İç içe geçmiş hareketler Olası düşünceler
- Gerektirir rutin işlem yönetimi (örneğin, suffiently küçük) için uyarlanmıştır
- Büyük hareketlere neden olabilir, ancak küçük programlı etkisi
- *Örneğin,* 14 *21 dinamik*DAO sağlamak
- Uygulamalar ne zaman kullanmak için hangi bilmek gerekir
- İşlemlerin sop türü, örneğin, operasyonları, yakalar ve gerekli işlemleri gerçekleştirmek
- -Bayt kod manipülasyon veya proxy kullanımı gerektirir
- İşlemler gerçekleştirildiğinde kontrol kaybı
- Kara büyü, her zaman olduğu gibi :)
Herhangi bir seçeneği mi kaçırdım?
Hangi uygulama tasarımı lazy-loaded
ilişkiler etkisini en aza indirmek için çalışırken tercih edilen yaklaşımdır?
(Oh, ve WoT için üzgünüm)
CEVAP
Hepimizin bildiği gibi, hazırda olmayan-invaziv ve mümkün olduğunca şeffaf olarak çalışır
İlk varsayım yanlış olduğunu söyleyebilirim. Transaparent kalıcılık uygulama her zaman varlık yaşam döngüsü ve nesne grafiği yüklenen boyutta dikkat çekmek gerekir beri bir efsane.
Hazırda düşünceler, bu nedenle eğer belirli bir işlem için bağımlılıklar belirli bir dizi gerekir, niyetin Hazırda bir şekilde ifade etmelisin okuyamaz unutmayın.
Bu açıdan, açıkça bu niyetlerini ifade çözümler (yani, 2, 4 ve 7) makul bak ve şeffaflık eksikliği yaşamazlar.
Etki Alanı Tasarımı: Etki Alanı Servis...
Uygulama linki Skype profil oluşturmak...
&; dosya "Uygulamam."böyle büyük ...
Neden C# 4 isteğe bağlı parametreler a...
Nasıl bir Android Uygulama paketi adın...