Java is, in many ways, C++--

Michael Feldman

Esempi Java - Apache Derby

Derby e' un piccolo database relazionale Open Source che puo' facilmente essere integrato in applicazioni Java. In realta' questo non e' l'unico utilizzo possibile, ma e' quello che verra' trattato su queste pagine.

L'impiego di Derby in un'applicazione presuppone l'inclusione del relativo file derby.jar nel classpath, che puo' essere scaricato dal sito ufficiale

Sommario


Creazione database

I dati vengono memorizzati da Derby dentro una directory definita dall'utente, nel nostro caso DATABASE_DIR; se questa cartella esiste il metodo ritorna il valore true, in caso contrario incarica Derby di crearla e ritorna il valore false.

public static final String DATABASE_DIR = "derby";
public static final String DERBY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";	
public static final String DERBY_PROTOCOL = "jdbc:derby:";
public static final String DERBY_USER = "utente";
public static final String DERBY_PASSWORD = "password";
...
public static boolean creaDatabase() {
	File dbFileDir = new File(DATABASE_DIR);

	if(dbFileDir.exists())
		return true;

	Properties props = new Properties();
	props.put("user", DERBY_USER);
	props.put("password", DERBY_PASSWORD);

	try {
		Class.forName(DERBY_DRIVER).newInstance();
		Connection conn = DriverManager.getConnection(
					DERBY_PROTOCOL +
					DATABASE_DIR +
					";create=true", props);
	} catch(Exception e) {
		e.printStackTrace();
	}

	return false;
}

Connessione al database

Il metodo presentato restituisce una connessione al database Derby precedentemente creato nella directory DATABASE_DIR. Una volta ottenuto l'oggetto Connection e' possibile utilizzare Derby come qualsiasi altro database, attraverso i metodi forniti dalle classi del pacchetto java.sql.

public static final String DATABASE_DIR = "derby";
public static final String DERBY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";	
public static final String DERBY_PROTOCOL = "jdbc:derby:";
public static final String DERBY_USER = "utente";
public static final String DERBY_PASSWORD = "password";
...
public static Connection connectDerby() throws SQLException {

	try {
		Class.forName(DERBY_DRIVER).newInstance();
	} catch (Exception ex) {
		ex.printStackTrace();
	}
	
	Properties props = new Properties();
	props.put("user", DERBY_USER);
	props.put("password", DERBY_PASSWORD);
	
	return DriverManager.getConnection(DERBY_PROTOCOL + DATABASE_DIR);
}

Chiusura del database

Il database Derby dovrebbe essere chiuso prima di terminare l'applicazione, se cio' non venisse fatto non si avrebbe effettivamente nessuna perdita di dati, ma al successivo avvio risulterebbe piu' lento perche' eseguirebbe un programma di ripristino.

public static boolean shutdownDerby() {	
	try {
		DriverManager.getConnection(DERBY_PROTOCOL + ";shutdown=true");
	} catch (SQLException se) {
		return true;
	}
	return false;
}