SORU
7 EKİM 2010, PERŞEMBE


DAO ve Hizmet katmanları (JPA/Hazırda Beklet Bahar)

JPA/Hazırda bekleme, Bahar ve Wicket dayalı yeni bir uygulama tasarlıyorum. DAO ve Hizmet katmanlar arasındaki ayrım benim için açık değildir. Wikipedia'ya göre, DAO

bir özet sağlayan bir nesne veritabanı türü veya arabirim bazı kalıcılık sağlayan mekanizma göstermeden belirli işlemleri veritabanı bilgileri.

Bir DAO çok fazla veri erişimi ile alakası olmayan yöntemleri içerebilir olup olmadığını merak ediyordum, ama daha kolay yürütülen bir sorgu kullanarak bir yolu? Örneğin "havaalanları belirli bir dizi üzerinde işlem yapan tüm havayolları listesi"? Servis bana katmanlı bir yöntem daha geldi, ama eğer servis katmanı JPA EntityManager kullanarak iyi bir uygulama örneği olup olmadığından emin değilim?

CEVAP
7 EKİM 2010, PERŞEMBE


Bir DAO tek bir erişim sağlamalıdırilgilive, ne kadar karmaşık bir iş modeline bağlı olarak, ya tam teşekküllü bir İş nesneleri veya basit Veri nesneleri döndürür veri kaynağı. Her iki şekilde de, DAO yöntemleri veritabanı biraz yakından yansıtmalıdır.

Bir Servis daha yüksek düzeyde bir arabirim sadece iş nesneleri işlemek için, ama en başta onlara erişim sağlayabilir. Eğer bir Hizmet ya da iş bir nesneyi, o nesne farklı veritabanları ve farklı DAO) oluşturulabilir, bilgileri bir HTTP isteği ile dekore edilmiş olabilir. Tek, sağlam, iş nesnesine çeşitli veri nesneleri dönüştüren bazı iş mantığı olabilir.

Ben genellikle oluşturmak bir DAO düşünce kullanılacaktır birini kim kullanacak veritabanı veya iş ile ilgili veriler, bu kelimenin tam anlamıyla en düşük seviye kod ayrıca tetikleyiciler, işlevler ve saklı yordam içinde veritabanı.

Belirli sorulara cevaplar:

Bir DAO mümkün olup olmadığını merak ediyordum gerçekten yok mu bu yöntemler içerir fazla veri erişimi ile alakası yok ama yolu daha kolay yürütülen bir sorgu kullanarak?

çoğu için, servis katmanı daha karmaşık iş mantığı, ayrı bir sorgu veri derleme isterim. Ancak, Eğer seni endişelendirdiğini işleme hızı, bir hizmet katmanı olabilir temsilci bir eylem bir DAO bile kırıyor güzellik modeli, aynı şekilde bir C programcı olabilir yazma çevirici kodu hızlandırmak için bazı eylemler.

Bana daha çok geliyor hizmet-katman, ama emin değilim yöntem eğer JPA EntityManager kullanıyorsanız servis katmanı iyi bir örnektir uygulama?

Eğer size hizmet varlık yöneticisi kullanmak için gidiyoruz eğer, o zaman tam olarak çünkü DAO olarak varlık yöneticisi düşünün. Eğer bazı gereksiz sorgu bina çıkarmak gerekirse, hizmet sınıfında, varlık yöneticisi kullanılan bir sınıf içine ayıklamak ve DAO yapmayın. Eğer kullanım durum çok basit, yapabilirsin atla hizmeti katmanı tamamen aile için işletme yöneticisi veya DAO denetleyicileri için hizmet yapacak pass dışı aramalar için getAirplaneById() DAO findAirplaneById()

GÜNCELLEME - Akademi ile ilgili olarak, aşağıdaki tartışma, kullanarak bir işletmenin yöneticisi olarak hizmet büyük olasılıkla en iyi karar, çoğu durumda, burada da bir DAO katmanı için çeşitli nedenleri öne açıklamalarda. Ama bence gayet mantıklı verilmiş olur

  1. Bu servis farklı veri setleri ile etkileşim gerekiyor
  2. Bu en az bir veri kümesi zaten bir DAO var
  3. Hizmet sınıfını kendi DAO emri için yeterince basit olan biraz sabır gerektiren bir modül bulunur

örnek.

//some system that contains all our customers information
class PersonDao {
   findPersonBySSN( long ssn )
}

//some other system where we store pets
class PetDao {
   findPetsByAreaCode()
   findCatByFullName()
}

//some web portal your building has this service
class OurPortalPetLostAndFoundService {

   notifyOfLocalLostPets( Person p ) {
      Location l = ourPortalEntityManager.findSingle( PortalUser.class, p.getSSN() )
        .getOptions().getLocation();
      ... use other DAO's to get contact information and pets...
   }
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • lilstevie89

    lilstevie89

    25 Mart 2011
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006