Přeskočit na obsah

Java Database Connectivity

Z Wikipedie, otevřené encyklopedie

V tomto článku byl použit překlad textu z článku Java Database Connectivity na anglické Wikipedii. 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é aplikace. 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 - příkaz je vždy odeslán databázovému serveru
  • PreparedStatement - 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 - používá se pro vykonání uložené procedury nad databází.

Příkazy pro modifikaci dat jako INSERT, UPDATE a DELETE vrací hodnotu, která uvádí, kolik řádků bylo v databázi pozměněno. Tyto příkazy dále nevrací žádnou další informaci.

Dotazovací příkazy vrací JDBC řádek s množinou výsledků. Řádek s množinou výsledků se používá k přenesení množiny výsledků. Jednotlivé sloupce jsou v řádku označeny pomocí jména nebo čísla sloupce. Množina výsledků může obsahovat libovolný počet řádků. Dále také obsahuje metadata, která identifikují jména jednotlivých sloupců a jejich datových typů.

Rožšíření pro pro základní verzi JDBC API je obsaženo v knihovně javax.sql.

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());
	}
}

Související články

Externí odkazy

Šablona:Pahýl - software