REST API duplikacja Service i DAO

REST API duplikacja Service i DAO
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Hej mam małe REST API mam dwie encje, dwa serwisy, dwa DAO.Encje się różnią troszkę polami ale serwisy mają podobne metody np:

Kopiuj
	public List<Flight> getListOfFlights() {
		return flightDAO.getListOfFlights();
	}
Kopiuj
       public List<Tourist> getListOfTurist() {
		return touristDAO.getListOfTurist();
	}

oraz DAO mają też podobne metody np:

Kopiuj
	@Override
	public List<Flight> getListOfFlights() {
		Session currentSession = sessionFactory.getCurrentSession();
		Query<Flight> theQuery = currentSession.createQuery("from Flight", Flight.class);
		return theQuery.getResultList();
	}
Kopiuj
	@Override
	public List<Tourist> getListOfTurist() {
		Session currentSession = sessionFactory.getCurrentSession();
		Query<Tourist> theQuery = currentSession.createQuery("from Tourist order by lastName", Tourist.class);
		List<Tourist> tourist = theQuery.getResultList();
		return tourist;
	}

Jak uniknąć takiej duplikacji w tych warstwach?? Jaka jest dobra praktyka??

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
1

Taki urok CRUDów :)

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

A witam ponownie, robię tłok na forum :)
Ale co do tych warstw DAO i Serwisów to czy jest jakiś sposób? Czytałem trochę o generycznych DAO i Serwisach ale czy stosuje się takie podejście i czy to rozwiązuje ten problem??

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

Używasz springa? jeśli tak mozesz sobie urościć DAO po przed spring data. Ale generalnie tak, w warstwie dostępu do danych jest dużo pisania nudnych rzeczy

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Używam Spring MVC. Ale zabawę z bazą danych chciałem mieć za pośrednictwem Hibernate.
W takim razie zostawię tak jak jest.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0
  1. Spring Data Rest potrafi w ogóle całą tą twoją "aplikacje" wygenerować na podstawie klas entity i interfejsów do dao ;]
  2. Google: generic dao, takie kiedyś były czasy że się pisał https://github.com/Pharisaeus/SpringScaffoldApplication/blob/master/src/main/java/scaffold/data/dao/implementation/GenericDaoImpl.java ;]
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

A możecie mi powiedzieć jakie konkretnie problemy rozwiązuje generic DAO czy generic Service??

TY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 204
0

Te same problemy co DRY

  1. Nie potwarzasz takiego samego kodu
  2. Jak chcesz coś zmienić, to zmieniasz tylko w jednej klasie, a nie w każdej
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

@Janki nie zalecam tak pisać, bo czasy mamy inne :P ale jak chcesz i tak robić takie pałowane DAO to lepiej już z tego Generica lecieć. Plus jest taki że twoje konkretne Dao będzie miało 2 linijki, po prostu extenduje Generica i podaje poprawne parametry generyczne i voila. A nie że masz copypaste milion razy.

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

No właśnie staram się dowiedzieć jak zrobić to DAO z Hibernatem tak żeby to miało ręce i nogi :) Jakoś wybitnie mi nie zależy na tych generykach ale nie wiem czy jest inny sposób. No a jak by to zrobili w jakimś korpo dla klienta??

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.