Vou te passar a forma que costumo fazer quando trabalho com jdbc, segue a classe que trabalha com a conexão (usando os seus dados de conexão):
public class ConnectionManager {
private static Connection connection;
private static final String DATABASE_URL = "jdbc:mysql://localhost/Doom";
private static final String USER = "root";
private static String PASSWORD = "saruman";
static {
try {
Class.forName("com.abc.ClasseDoDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
return connection;
}
public static void startTransaction() throws SQLException {
openConnection(true);
}
public static void startReading() throws SQLException {
openConnection(false);
}
public static void endReading() throws SQLException {
if (connection != null && !connection.isClosed()) {
connection.close();
}
}
private static void openConnection(boolean isTransactionEnabled)
throws SQLException {
if (connection == null || connection.isClosed()) {
connection = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD);
if (isTransactionEnabled) {
connection.setAutoCommit(false);
}
}
}
public static void commitTransaction() throws SQLException {
if (connection != null && !connection.isClosed()) {
connection.commit();
connection.close();
}
}
public static void rollBackTransaction() throws SQLException {
if (connection != null && !connection.isClosed()) {
connection.rollback();
connection.close();
}
}
}
Algumas partes podem não estar 100% certas, como a parte de carregar o Driver, na classe original eu uso DataSource, então não é necessária só a coloquei aqui. Como não há transações, os métodos startTransaction, commitTransaction e rollBackTransaction simulam o funcionamento transacional, setando o auto-commit da conexão para falso e te dando o controle sobre o commit e rollback. Quando não há necessidade de transações, use os métodos startReading e endReading. Exemplo de uso da classe:
public void insere(Objeto qqcoisa) {
// Statement, ResultSet, etc
try {
ConnectionManager.startTransaction();
Connection connection = ConnectionManager.getConnection();
// insere alguma coisa
} catch (SQLException e) {
ConnectionManager.rollbackTransaction();
} finally {
try {
ConnectionManager.commitTransaction();
} catch (SQLException e) {
}
}
}
Acho que essa classe poderia ser melhorada, mas eu mesmo não uso jdbc puro faz um bom tempo. Mas ela facilita bastante, e permite você trabalhar com transações de forma um pouco melhorada. :D
Se for possível, utilize as classes do Spring que lidam com jdbc, vão te ajudar bastante!
Blz? Flw! :thumbup: