Witam, otóż staram się napisać mały projekt i natrafiłem na pewną zagwozdkę.
A mianowicie na internecie znalazlem projekt który dziala na tabeli User w bazie danych. Posiada również StudentDAO(interfejs), realizacje tego interfejsu(StudentJDBCDAO), oraz POJO User. Interfejs ten posiada metode setDataSource(), która ustawia połaczenie w StudentJDBC.... I teraz moje pytanie co zrobić jak mamy wiecej objektów POJO i przydałoby się jakoś zapisywać i odczytywać je z bazy. Czy utworzyć jedną mega klasę która będzie miała wszystkie metody dla wszystkich objektów czy istnieje jakieś bardziej przejrzyste rozwiązanie?
Dla nowej klasy (encji) zrobić nową klasę DAO.
Ok a jak wtedy zarządzać połączeniem z bazy, każda klasa DAO nie będzie miała setDataSource().
Każda klasa DAO musi mieć jakiś Data Source. Gdybyś użył Spring Data to nie musiałbyś myśleć o ustawianiu Data Source w klasach DAO ;)
Ok, zaczynam powoli jarzyć. Ten bean co tworze go w xml
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/TEST"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
Potem tworząc kolejne ziarna dla kazdego obiektu realizujacy poszczegolny DAO interfejs taje referencje na niego, tak?
@Edit Ten obiekt istnieje cały czas i zarządza połączeniem z bazą danych?
Zamiast wielu DAO lepiej zrobić jakiś generic Dao... Ale to może później.
Proponuję wykorzystać Hibernate. Robisz wtedy ziarno session... a może w sumie zamiast się rozpisywać lepiej przejrzyj sobie ten przykład:
http://www.journaldev.com/3531/spring-mvc-hibernate-mysql-integration-crud-example-tutorial
Prosty i treściwy. Może DAOImpl bym trochę poprawił ale generalnie nie ma to na razie większego znaczenia.
użyj Spring Data!!
skytrack napisał(a):
Ok, zaczynam powoli jarzyć. Ten bean co tworze go w xml
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/TEST"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
Potem tworząc kolejne ziarna dla kazdego obiektu realizujacy poszczegolny DAO interfejs taje referencje na niego, tak?
@Edit Ten obiekt istnieje cały czas i zarządza połączeniem z bazą danych?
Każde DAO powinno mieć jakiś data source. Obiekt data source istnieje cały czas i jest to pula połączeń do bazy danych. Przykładowo popularna implementacja tej klasy to HikariCP:
http://brettwooldridge.github.io/HikariCP/
Dzięki ;) O to mniej więcej mi chodziło.