Pewnie zaraz ktoś napisze że możesz użyć Spring Boota i Spring Data JPA. Tym tandemem ograsz każdy twój use case w kilku linijkach kodu, ale nie rób tego. Dopóki nie ogarniesz filozofii springa, konfiguracji itd. to lepiej żebyś jak to się robiło kiedyś (i w sumie nadal robi w starszych appkach). Kiedyś tutaj wspomniałem że pierwszy raz springa stawiałem ze dwa tygodnie, ale nie żałuję. Piękne czasy :)
Co do twojej appki:
Na samym początku musisz się zdecydować czy chcesz mieć konfiguracje springa i beanów w XMLu(tak jak teraz) czy chcesz to mieć w kodzie javowym, wygląda to mniej więcej tak jak w tym linku który wrzuciłem wyżej.
Widzę, że ty używasz XMLa i adnotacji co się zdarza i jest dozwolone, nawet w moim projekcie tak jest, ale porzuciłbym na razie XMLa - ale jeżeli chcesz nadal to możesz zrobić identycznie jak tutaj:
http://www.baeldung.com/the-persiste...-jpa#xmlconfig
To jest ten sam link co wyżej, masz tam pokazane jak stworzyć potrzebne beany (datasource, entity manager factory, transaction manager) w XMLu. Plink persistence context xml już nie będzie ci potrzebny.
Po takim zabiegu + dodaniu adnotacji @Transactional cały boilerplate metody addCustomerToDatabase() może być zastąpiony jedną♥linijką:
entityManager.persist(newCustomer);
Generalnie transakcje w springu to nie jest łatwa kwestia, ale jeżeli potrzebujesz czegoś tak prostego to na początku @Transactional na metodzie w DAO jest jak najbardziej ok.
Oprócz tego możesz DAO oznaczyć jako @Repository a nie @Component. Sama zmiana na razie nic nie powoduje oprócz tego że bezpośrednio, przez adnotacje, mówić za co odpowiada twoja klasa (repository != dao, ale jebać - twórcy springa nazwali to tak i już). Ale od którejś wersji(chyba 4.1, ale idk) jeżeli w kontekscie springowym zdefiniujesz beana 'exception translator' (jakoś tak, nie pamiętam) + oznaczysz swoje dao jako @Repository to wtedy spring zacznie przepisywać wyjątki specyficzne dla konkretnej implementacji (ty używasz pewnie hibernate jako implementacji JPA) na swoje własne. Nie jest to na razie jakaś duża zaleta dla Ciebie, ale warto pamiętać że takie coś istnieje.
Co do kodu - jasne, możesz wrzucić tutaj, możesz na PW.
Jak coś nie jest jasne to pisz, bozia nie obdarzyła mnie talentem pedagogicznym :D
Zakładki