Java Database Connectivity
Java Database Connectivity (známé spíše jako JDBC) je API pro programátory v programovacím jazyku Java, které definuje jednotné rozhraní pro přístup k relačním databázím. JDBC je součástí Javy SE („Standard Edition“) od JDK 1.1. Pro přístup ke konkrétnímu databázovému serveru je potřeba JDBC ovladač, který poskytuje tvůrce databázového serveru.
Úvod
JDBC API vzniklo jako vrstva mezi Java aplikací a vlastní komunikací s databází. Datové typy SQL lze získat z výsledku SQL dotazu jako instance Java tříd a s těmi pracuje aplikace. Naopak JDBC ovladač (driver) dokáže vkládat instance Java tříd do SQL dotazů a správně, v závislosti na zvolené databázi, je uložit, upravit apod. Takto lze vytvořit aplikaci nezávislou na zvoleném databázovém stroji. Nicméně je stále potřeba psát dotazy v SQL - naproti tomu stojí Hibernate.
Historie a implementace
JDBC bylo poprvé uveřejněno společností Sun Microsystems jako součást JDK 1.1 19.února 1997. Od té doby je standardní součástí Java Standard Edition. Třídy knihovny JDBC jsou uloženy v balíčku knihoven jazyka Java java.sql a javax.sql.
Od verze 3.0 je JDBC vyvíjen pod hlavičkou Java Community Process. JSR 54 obsahuje specifikaci pro JDBC 3.0 (který je součástí J2SE 1.4), JSR 114 specifikuje implementaci rozhraní Rowset v JDBC a JSR 221 je zahrnuje specifikaci pro JDBC 4.0, jako součást Java SE 6.
Funkčnost
JDBC umožňuje paralelní použití několika implementací v jediné aplikaci. API poskytuje možnost dynamického načtení příslušných Java knihoven a jejich registraci pomocí JDBC Driver Manager. Driver Manager obsahuje tovární metodu pro vytvoření připojení s databází před JDBC. Připojení k databázi přes JDBC umožňuje tvorbu a vykonání jednotlivých příkazů. Patří mezi ně SQL příkazy pro modifikaci dat: CREATE, INSERT, UPDATE a DELETE a také dotazovací příkaz SELECT. JDBC připojení také umožňuje přístup k uloženým procedurám. Používání jednotlivých příkazů je specifikováno v následujících rozhraních: • Statement (http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html) o příkaz je vždy odeslán databázovému serveru • PreparedStatement (http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html) o Příkaz je uložen a následně je stanoven postup pro jeho vykonání přímo na databázovém serveru. Toto rozhraní umožňuje několikanásobné vykonání stejného příkazu efektivním způsobem. • CallableStatement (http://download.oracle.com/javase/1.4.2/docs/api/java/sql/CallableStatement.html)
Přístup k databázi
Identifikace databáze se děje na základě URI, Unified Resource Identifier. Formát tohoto URI je závislý na zvoleném JDBC driveru:
Příklady JDBC URI:
- MySQL: jdbc:mysql://server/jméno_databáze?characterEncoding=UTF-8
- Sybase: jdbc:sybase:Tds:server:port/jméno_databáze
- IBM AS400: jdbc:as400://server/jméno_databáze
- Oracle: jdbc:oracle:thin:@server:port:jméno_databáze
Příklady JDBC driverů:
- MySQL: com.mysql.jdbc.Driver
- Sybase: com.sybase.jdbc3.jdbc.SybDriver
- IBM AS400: com.ibm.as400.access.AS400JDBCDriver
- Oracle: oracle.jdbc.driver.OracleDriver
Samozřejmostí je autentizace uživatelským jménem a heslem.
Příklad
public void connect() throws DriverNotFoundException, ConnectionFailedException {
try {
Class.forName(jdbcDriver);
connection = DriverManager.getConnection(dbURI, user, passwd);
} catch(ClassNotFoundException e) {
throw new DriverNotFoundException(e.getMessage());
} catch(SQLException e) {
throw new ConnectionFailedException(e.getMessage());
}
}
Nezapomínejte uzavírat navázaná spojení!
public void disconnect() throws DisconnectFailedException {
try {
connection.close();
} catch(SQLException e) {
throw new DisconnectFailedException(e.getMessage());
}
}