Buongiorno a tutti,
cerco dei consigli se il seguente metodo di sviluppo è corretto o meno secondo voi.
premesso che sto realizzando un sito web con Tomcat 7 + jsp + servlet
Il mio dubbio è sull'utilizzo di Synchronized o Thread.
Mi spiego meglio ho creato una classe che interagisce con il DB con driver JDBC:
public class FotoDAO {
private DataSource datasource = null;
private static final String TABLE = "_foto";
private static final String ID_FOTO = "id_foto";
private static final String ID_PET_SITTER = "id_pet_sitter";
private static final String NOME = "nome";
private static final String PERCORSO = "percorso";
private static final String DATA_CARICAMENTO = "data_caricamento";
private static final String IP = "ip";
private static final String FOTO_PROFILO = "foto_profilo";
//SQL STATEMENT
// insert into table (....) values (.....)
private static final String persitFoto =
"INSERT INTO "+TABLE+" ("+ID_PET_SITTER+", "+NOME+", "+PERCORSO+", "+DATA_CARICAMENTO+", "+IP+", "+FOTO_PROFILO+
") VALUES (?, ?, ?, ?, ?)";
public FotoDAO(){
}
public static int persistFoto(Foto foto) throws PersistenceException, InterruptedException{
Connection conn = null;
PreparedStatement st = null;
int ris = 0;
try{
conn = DataSource.getConnection();
st = conn.prepareStatement(persitFoto);
st.setInt(1, foto.getIdPetSitter());
st.setString(2, foto.getNome());
st.setString(3, foto.getPercorso());
st.setTimestamp(4, foto.getDataCaricamento());
st.setString(5, foto.getIp());
st.setInt(6, foto.getFotoProfilo());
st.executeUpdate();
ris = st.SUCCESS_NO_INFO;
}
catch(SQLException e){
throw new PersistenceException(e.getMessage(), e.getStackTrace());
}
finally{
try{
if (st != null)
st.close();
if (conn != null)
conn.close();
}catch(SQLException e){
throw new PersistenceException(e.getMessage(), e.getStackTrace());
}
}
return ris;
}
all 'interno della classe che implementa la Servlet eseguo la chiamata ad DB per l'inserimento del record;
try{
FotoDAO.persistFoto (foto);
}
.....
ora mi chiedevo, se ho diversi utenti che nello stesso istante voglio inserire una foto nel db potrei avere dei problemi ?
la chiamata del metodo la dovrei fare lanciando un Thread? oppure implementare Synchronized?
Al termine della chiamata: FotoDAO.persistFoto (foto); le risorse vengono liberate giusto?
un grazie a tutti per la risposta.
Luca