Java Web - łączenie się z bazą danych

Java Web - łączenie się z bazą danych
M3
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 11 lat
  • Postów:104
0

Witam, ucze sie własnie pisania stron JSP i servletów. Potrzebuje sie polaczyc z baza danych. Mam pytanie, w jaki sposob powinienem to zrobic? Wiem ze moglbym po prostu polaczyc sie z kodu JSP czyli cos w stylu:

Kopiuj
<%
    Connection conn = DriverManager.getConnection("url", "usr", "passwd");
    ...
%>

Jednak wydaje mi sie to zlym rozwiazaniem z 2 powodow. Po pierwsze, musiałbym kopiowac i wklejac ten wycine kodu w kazdym skrypcie gdzie sie lacze z baza a chyba nie o to chodzi. Po drugie, wyczytałem na jakims forum ze łaczenie sie z poziomu kodu JSP jest bardzo zła praktyka.
Uznalem ze napisze wiec osobna klase Java to obslugi bazy danych (btw. to powinna byc zwykła klasa czy servlet?). Pytanie teraz jest o obsługe wyjatkow. Kod tej klasy wygladałby mniej wiecej tak:

Kopiuj
public class Database {
    
    private Connection conn;

    public Database() throws SQLException {
        conn = DriverManager.getConnection("url", "usr", "passwd");
        ...
    }
}

Innymi słowy konstruktor wywalałby wyjatek w razie niemoznosci połaczenia sie z baza danych. Poniewaz obiekt bazy danych rejestrowałbym jako ziarnko:

Kopiuj
<jsp:useBeam id="database" class="test.Database" scope="page"/>

To nie wiem jak miałbym przechwycic tutaj ten wyjątek? Prosze o rozwiazanie tego problemu albo zaproponowanie lepszego sposobu na laczenie sie z baza danych. Bede bardzo wdzieczny. Pozdrawiam

edytowany 1x, ostatnio: michat34
0

Zdecydowanie lepiej opcja 2. Nie dawaj konstruktorowi wyrzucać wyjątku tylko otocz tworznie połączenia blokiem try/catch i tam reaguj na exceptiona.

M3
Myslalem o tym ale wtedy w jaki sposob dowiem sie o tym ze połaczenie sie nie udało? Dopiero w wywołaniu jakiejś metody która łaczy sie z baza. Wtedy moze byc troche za pozno, musze odpowiednio zareagowac juz w chwili łaczenia sie.

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.