Hej,
Słuchajcie potrzebuję zaprojektować kawałek aplikacji i przyznam szczerze, że trochę się już w tym pogubiłem i dlatego zdecydowałem się zapytać Was.
Opis:
Tworzę projekt Javowy, który będzie odpowiedzialny za kontakt z bazą danych (standard). Oczywiście zostanie to zrealizowane za pomocą JPA (implementacja w Hibernate), a dostarczycielem api do DAO czy transakcji będzie Spring framework.
Przewiduję, że będzie potrzebna mi jakaś generyczna klasa DAO do CRUD operacji. Oprócz tego zapewne będą mi potrzebne jeszcze inne klasy(bardziej specyficzne), za pomocą których będę odwoływał się do bazy danych (może podklasy generycznego DAO?). Będą tam zawarte jakieś szczególne zapytania czy to sql, jpql czy przez CriteriaBuilder. Przewiduję także, że będzie mi potrzebny deklaratywna obsługa transakcji (całość dostarczona ze Springa).
I tu pojawiają mi się pytania:
Jak to zrobić zgodnie ze sztuką?
Czy powinienem w ogóle tworzyć specyficzne DAO dla różnych operacji, które będą dziedziczyć po DAO generycznym? Czy tak to się robi?
Jak napisać te DAO opakowane deklaratywnym obsługą transakcji, aby móc łatwo i bezinwazyjnie przekazywać je innym beanom z kontenera Springa (tam się pojawić może problem z interfejsami Proxy i Advice)?
Czy może zrobić to w całkiem inny sposób?
Aha czy tak właściwie jak z umieszczam w kontenerze Springa obiekt DAO, powołując go jako "zwykłago" beana to czy to dobrze?
Jak zapewnić, aby w przyszłości nie musieć zmagać się z problemami konkurencji? Czy to już zrobi za mnie od początku do końca Spring AOP i API do transakcji?
Czy macie może jakieś propozycje przykładowych projektów, których robi się to tak jak powinno się robić?
Może jakieś linki?
Czy może rozszerzyć opis jak coś jest niezrozumiałe lub niekompletne?
Dzięki