REST API duplikacja Service i DAO

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:

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

oraz DAO mają też podobne metody np:

	@Override
	public List<Flight> getListOfFlights() {
		Session currentSession = sessionFactory.getCurrentSession();
		Query<Flight> theQuery = currentSession.createQuery("from Flight", Flight.class);
		return theQuery.getResultList();
	}
	@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??

1

Taki urok CRUDów :)

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??

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

0

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

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 ;]
0

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

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
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.

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??

1 użytkowników online, w tym zalogowanych: 0, gości: 1