DB katman üyeler statik veya örnek olmalı mı?

oy
3

Ben DB tabakasında sınıflar içinde sadece statik işlevleri ve bu sınıflar üye işlevlerine erişmek için örneklenemez gereken başka projeler var projelerini gördüm.

Daha iyi ve bu yüzden mi?

Oluştur 19/08/2008 saat 13:49
kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
0

Her DB Katman amacına ilgili. Eğer DB katmana erişmek için bir örneğini kullanıyorsanız, bu sınıfın birden çok sürümü var olmaya izin vermiş olursunuz. Örneğin birden fazla veritabanı erişmek için aynı DB katmanını kullanmak istiyorsanız bu arzu edilir.

Yani böyle bir şey olabilir:

DbController acrhive = new DbController("dev");
DbController prod = new DbController("prod");

Hangi farklı veritabanlarına erişmek için aynı sınıfın birden çok örneğini kullanmasına olanak sağlar.

Tersine yalnızca bir veritabanı anda uygulama içinde kullanılmasına izin isteyebilirsiniz. Bunu yapmak istiyorsanız o zaman bu amaç için statik bir sınıf kullanarak bakmak olabilir.

Cevap 19/08/2008 saat 13:57
kaynak kullanıcı

oy
-2

Bu abone hangi modeli bağlıdır. ORM (Object İlişkisel Model) ya da Arayüz Modeli. ORM çünkü nhibernate, LINQ to SQL, Varlık Framework, ve diğerleri gibi çerçeveler şu anda çok popüler. ORM Eğer nesne modeli etrafında bazı iş kısıtlamaları özelleştirmek ve dışarı aslında veritabanına kaydedilmiş olmalıdır bilerek ile dolaştır sağlar. , Ekleme güncelleme ve silme ile ilgili herşey nesnesi olur ve gerçekten çok fazla geliştirici endişelenmenize gerek yok.

Microsoft tarafından popüler hale Kurumsal Veri Modeli gibi Arayüz Modeli, sizin nesne hangi durumda ve nasıl ele alınmalıdır bilmek gerektirir. Ayrıca eylemleri gerçekleştirmek için gerekli SQL oluşturmanızı gerektirir.

ORM ile gitmek söyleyebilirim.

Cevap 19/08/2008 saat 14:00
kaynak kullanıcı

oy
2

Ben, tek bir nesne veritabanında tek kayda korelasyon olmak ister bir nesnesi olması gerekir yani. Bu temel ActiveRecord desen. Tecrübelerime göre, tek nesne-tek satır yaklaşım kodda çok daha akıcı ve okuryazar sunu oluşturur. Ayrıca, kayıtları ve tablo olarak sınıf olarak nesneleri tedavi etmek ister. Örneğin yapmam rekor adını değiştirmek için:

objPerson = new Person(id)

objPerson.name = "George"

objPerson.save()

almak için ise Louisiana'da yaşayan tüm insanlar yapabilir

aryPeople = Person::getPeopleFromState("LA")

Aktif Record eleştirilerden bol vardır. Eğer her kayıt için veritabanı sorgulama veya sizin sınıfları sıkı hem de değişmezlik oluştururken, veritabanına birleştiğinde nerede özellikle sorunlarla çalıştırabilirsiniz. Bu durumda bir düzey yukarı hareket edebilir ve böyle bir şey ile gitmek DataMapper .

Modern çerçeveler ve çoğu ORM en Bu sakıncalardan bazılarının farkında ve onlar için çözümler sunar. Küçük bir araştırma yapın ve bu çözümleri numarası olan bir sorun olduğunu görmeye başlayacak ve tüm ihtiyaçlarınıza bağlıdır.

Cevap 19/08/2008 saat 14:06
kaynak kullanıcı

oy
0

lomaxx belirtildiği gibi, tüm DB modelinin amacı hakkında.

Ben genellikle sadece benim DAL sınıfları oluşturulan bir örneğini istemek gibi iyi, statik sınıfları kullanmak bulabilirsiniz. Sadece 1 birden çok kez sorgulanan edilebileceğini bulunmalıdır nerede ziyade potansiyel benim DAL sınıfları birden çok örneğini oluşturma yükü ile mücadele etmek yerine statik yöntemler kullanmayı tercih ediyorum.

Cevap 19/08/2008 saat 14:08
kaynak kullanıcı

oy
0

Ben bunu yapmak için size "DB katmanını" istediğinize bağlıdır söyleyebilirim ...

Sonra, bir veri kümesi döndürür bir saklı yordam veya sql deyimi, yürütme sizin için veri kümesi oluşturulan bir nesneye kalıcı referansını gerekmez çünkü bana daha mantıklı statik yöntemlerle ilgili genel rutinler varsa.

Ben onun sonucu olarak özellikle yazılan sınıfı veya koleksiyon dönen bir DB Katmanı oluşturduysam de statik bir yöntem kullanmayı tercih ediyorum.

Öte yandan gerekli kayıt DB bağlanmak ve almak için, (@ barret-Conrad'ın cevaba bakınız) kimliğe benzer belirli bir parametreyi kullanarak, bir sınıfın örneğini oluşturmak istiyorsanız, o zaman muhtemelen istemiyor ediyorum sınıfında statik yöntemini kullanın. Ama o zaman bile muhtemelen diğer sınıf dayanarak edildi statik yöntemleri var MUYDUNUZ DB Yardımcısı sınıfının çeşit olurdu söyleyebilirim.

Cevap 19/08/2008 saat 17:10
kaynak kullanıcı

oy
0

Başka "değişir". Ancak, ben de sadece işe yaramaz statik çok yaygın bir senaryo düşünebiliriz. Eğer trafik iyi bir miktar alır bir web sitesi var ve paylaşılan bir bağlantısı olan bir statik veritabanı katmanı varsa, belaya girebilir. ASP.Net yılında orada bir varsayılan olarak oluşturulur uygulamanın örneği ve böylece statik veritabanı katmanı varsa sadece alabilirsiniz biri için veritabanına bağlantıyı herkes web sitesi kullanıyor.

Cevap 30/08/2008 saat 22:52
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more