JDBC - kiedy zamknac PreparedStatement

0

hej, musze w projekcie wykorzystac zwykle JDBC (ze wzgledu na prostote bazy nie ma sensu uzywac frameworkow, zreszta nie jest to watkiem tego postu). No wiec przygotowuje sobie pare klas opakowujacych i napotkalam sie na pewna zagwostke. Podam przyklad-bedzie prosciej. Przygotowuje sobie klase do selectow. niech sie nazywa SelectTest:

class SelectTest{

 public SelectTest(){
}

public ResultSet selectDataTest(String tableName) throws SQLException{

        ResultSet result = null;
        PreparedStatement prepStatement = null;

        try {
            prepStatement = connection.prepareStatement(
                    "SELECT * FROM " + tableName);

            result = prepStatement.executeQuery();
        } finally {
              prepStatement.close();
        }
        return result;
}
}

dobra. mamy prosta metoda ktora bedize wyciagac komorki z zadanej tabeli. powiedzmy ze pozniej, w jakims projekcie chce tego uzywac. Tworze sobie obiekt typu SelectTest, wywoluje metode selectDataTest(nazwa), ta metoda zwraca mi ResultSet, wiec iteruje po next() i odczytuje co mi tam zwrocil. i tu niespodzianka-dostaje ze ResultSet zostal zamkniety. zastanawialam sie chwile o co chodzi-i winna jest linijka 'prepStatement.close()'. hmmm.. przeciez posprzatac trzeba (finally). poza tym zamykam PreparedStatement, a nie ResultSet. czy zamkniecie PreparedStatement (mimo ze wczesniej pobiore i zapisze wyniki do ResultSet) powoduje ze zamkne od razu ResultSet?
gdzie zatem sprzatac? pozniej w kodzie-w ktorym korzystam z tej klasy? po przeczytaniu resultSet, wywolywac na nim close?

bede wdzieczna za wyjasnienie mi tego

    pzdr,
   misty
0

http://www.infoq.com/presentations/10-Ways-to-Better-Code-Neal-Ford

Na początku prezentacji masz dobry design pod JDBC

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