Archive for the ‘JPA’ Category

Hibernate in 10 minutes

5 May 2008

Hibernate is a quick way to store / retrieve data to a database.

Step 1. Download all necessary files

Download MySQL from mysql.com → downloads → MySQL Community Server → Windows ZIP/Setup.EXE (x86) → Pick a mirror → No thanks, just take me to the downloads → Greece [National Technical University of Athens] HTTP → mysql-5.0.51b-win32.zip

Download JDBC driver of MySQL from mysql.com → downloads → Connectors → Connector/J → Source and Binaries (zip) → Pick a mirror → No thanks, just take me to the downloads → Greece [National Technical University of Athens] HTTP → mysql-connector-java-5.1.6.zip

Download Hibernate core from hibernate.org → Download → Hibernate Core → Download → hibernate-3.2.6.ga.zip

Download Hibernate annotations from hibernate.org → Download → Hibernate Annotations → Download → hibernate-annotations-3.3.1.GA.zip

Step 2. Make the database schema

ΜySQL is easily installed. After the installation completes, a configuration wizard opens: you should note down the root password.

In order to start MySQL go to Start → Programs → MySQL → MySQL Server 5.0 → MySQL Command Line Client → give the root password.

Write CREATE DATABASE heat;

For confirmation state show databases; and then use heat;

It would be useful to leave the command prompt window of MySQL open.

So, you have just created the database schema. What about the tables? Well, Hibernate will make them automatically!

Step 3. Concentrate all jars

Create a folder, e.g. C:/jars and copy inside:

  • hibernate-3.2.6.ga.zip/hibernate3.jar
  • everything that lies inside hibernate-3.2.6.ga.zip/lib
  • hibernate-annotations-3.3.1.GA.zip/hibernate-annotations.jar
  • hibernate-annotations-3.3.1.GA.zip/lib/hibernate-commons- annotations.jar and ejb3-persistence.jar
  • the JDBC driver mysql-connector-java-5.1.6.zip/mysql-connector- java-5.1.6-bin.jar

Step 4. Create the actual project.

Create a project with the name “Hibernate” using Eclipse or any other IDE (NetBeans, JDeveloper etc).

Add the folder with the jars into the classpath: Project → Properties → Java Build Path → Add External JARs…

Step 5. Write hibernate.cfg.xml

hibernate.cfg.xml is a special file used by Hibernate. It holds information about the database we are using.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
   <session-factory>
      <!-- Database connection settings -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="connection.url">jdbc:mysql://localhost/heat</property>
      <property name="connection.username">root</property>
      <property name="connection.password">12345</property>

      <!-- SQL dialect -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

      <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
      <property name="current_session_context_class">thread</property>

      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>
   </session-factory>
</hibernate-configuration>

The properties connection.* hold information that is directly used in JDBC code (Class.forName() etc.). Make sure you enter the correct password!

SQL dialect is an interesting property: We say to Hibernate that it communicates with a MySQL database.

Place hibernate.cfg.xml inside the folder of the project, e.g. inside C:/Eclipse/workspace/Hibernate, or anywhere in the classpath. This file must be in the classpath.

Step 6. Build the model

This simple application handles persons. For every person, we are interested about the name and a unique number (identifier).

class: Person

state: Long id, String name

behaviour: setId(), getId(), setName(), getName()

	public class Person {

	private Long id;
	private String name;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

So, it’s a simple java bean. What we would be pottering about now is creating 1. a table “person” in the database and 2. a class with pure JDBC: insert(Person person), select(Long id), update(Person person), delete(Long id) etc. Fortunately, Hibernate takes care of both of these tasks. We just use some annotations straight from the Java Persistence API.

import javax.persistence.*;

@Entity
public class Person {

	private Long id;
	private String name;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

@Entity means that all the objects that derive from this class can be stored to the database.

@id declares the primary key.

@GeneratedValue means that the database will ensure the uniqueness of the primary key. (In MySQL is the AUTO_INCREMENT flag)

Step 7. Time for action

Create the table person in the database

	// usual initialization
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Person.class);
	config.configure();

	// create the table in the database
	new SchemaExport(config).create(true, true);

During the usual initialization the class Person is added config.addAnnotatedClass(Person.class);. After that, all configuration parameters are read from hibernate.cfg.xml and all classes marked with an @Entity are configured config.configure();. These statements naturally belong to a constructor.

The statement new SchemaExport(config).create(true, true); creates the tables in the database. In case these tables are already defined, they get dropped and recreated; all their data are lost.

To confirm write show tables; at the MySQL command prompt.

Store an object in the database

	// usual initialization
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Person.class);
	config.configure();

	// we want to store Vincent Hanna to the database
	Person person = new Person();
	person.setName("Vincent Hanna");

	// expensive initialization
	SessionFactory factory = config.buildSessionFactory();
	// get session
	Session session = factory.getCurrentSession();
	
	// store
	session.beginTransaction();
	session.save(person);
	session.getTransaction().commit();

The statement SessionFactory factory = config.buildSessionFactory(); costs a lot. That’s why the factory object should be created once and be made available to the rest of the application (e.g. singleton pattern).

To confirm write SELECT * FROM person; at the MySQL command prompt.

You may use a class with utility static methods to tidy things up:

	// we want to store Vincent Hanna to the database
	Person person = new Person();
	person.setName("Vincent Hanna");
	DataBase.save(person);

Conclusion: We gain precious development time as it is no more necessary 1. to manually create any table in the database and 2. to write long JDBC classes with the usual operations (insert, update, select, delete).

Hibernate dalam 10 menit

4 May 2008

Selamat siang saudara2 dari Indonesia. Hibernate adalah cara yang cepat untuk menyimpan dan mengambil informasi (data) dari sebuah basis data (database), tanpa perlu memahami perintah2 SQL atau langsung tulis kode JDBC.

Langkah 1. Dapat semua yang perlu dulu

Mendapatkan MySQL dari mysql.com → downloads → MySQL Community Server → Windows ZIP/Setup.EXE (x86) → Pick a mirror → No thanks, just take me to the downloads → Japan [JMPA] HTTP → mysql-5.0.51b-win32.zip

Mendapatkan JDBC driver MySQL (perhubungan antara Java dan MySQL, disebut driver atau connector dalam bahasa inggris) dari mysql.com → downloads → Connectors → Connector/J → Source and Binaries (zip) → Pick a mirror → No thanks, just take me to the downloads → Japan [JMPA] HTTP → mysql-connector-java-5.1.6.zip

Mendapatkan Hibernate core dari hibernate.org → Download → Hibernate Core → Download → hibernate-3.2.6.ga.zip

Mendapatkan Hibernate annotations dari hibernate.org → Download → Hibernate Annotations → Download → hibernate-annotations-3.3.1.GA.zip

Langkah 2. Bangun struktur basis data

ΜySQL dapat diinstal dengan mudah. Habis proses instalasi kotak dialog konfigurasi akan muncul. Bagus kalau tulis di kertas sandi administrator (root password).

Supaya mulai MySQL pilih Start → Programs → MySQL → MySQL Server 5.0 → MySQL Command Line Client → dan masukan sandinya root.

Masukan perintah CREATE DATABASE buku;

Untuk memastikan masukan show databases; dan kemudian use buku;

Tolong tinggal jendela MySQL terbuka, karena nanti kita akan pakainya lagi.

Ternyata sudah bangun struktur paling dasar basis data ini. Hibernate nanti akan bangun tabel2 dengan cara otomatis!

Langkah 3. Kumpul semua jar

Bangun satu folder yang baru, misalnya C:/jars dan pindahkan di dalamnya:

  • hibernate3.jar yang ada di hibernate-3.2.6.ga.zip
  • semua yang ada di folder hibernate-3.2.6.ga.zip/lib
  • hibernate-annotations.jar yang ada di hibernate-annotations-3.3.1.GA.zip
  • hibernate-commons- annotations.jar dan ejb3-persistence.jar yang ada di hibernate-annotations-3.3.1.GA.zip/lib/
  • mysql-connector- java-5.1.6-bin.jar yang ada di dalam mysql-connector-java-5.1.6.zip

Langkah 4. Bangun proyek.

Buatlah sebuah proyek bernama Hibernate pakai Eclipse atau pakai IDE yang lain (NetBeans, JDeveloper dll).

Masukan di classpath proyek folder dengan semua jar yang tadi.

Kalau di Eclipse pilihlah Project → Properties → Java Build Path → Add External JARs…

Langkah 5. Tulis hibernate.cfg.xml

hibernate.cfg.xml ini sebuah file khusus dipakai Hibernate. Di dalamnya ada informasi tentang basis data yang mana kita pakai.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
   <session-factory>
      <!-- Database connection settings -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="connection.url">jdbc:mysql://localhost/buku</property>
      <property name="connection.username">root</property>
      <property name="connection.password">12345</property>

      <!-- SQL dialect -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

      <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
      <property name="current_session_context_class">thread</property>

      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>
   </session-factory>
</hibernate-configuration>

Tolong lihat property2 bernama connection.* yang ada informasi yang tetap sama kita kalau langsung pakai JDBC. Coba ingat masukan sandi yang benar! (yang sudah masukan waktu menginstal MySQL)

Kalau di SQL dialect tertulis dengan jelas bahwa basis data kita pakai adalah MySQL.

Taruh hibernate.cfg.xml di dalam folder proyek, misalnya di C:/Eclipse/workspace/Hibernate. Yang penting, file ini dalam classpath.

Langkah 6. Membuat model

Aplikasi dasar ini tentang orang2. Buat setiap orang kita tertarik tentang namanya dan satu nomor yang unik.

class: Orang

keadaan: Long id, String nama

sifat: setId(), getId(), setNama(), getNama()

public class Orang {

	private Long id;
	private String nama;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNama() {
		return nama;
	}
	public void setNama(String nama) {
		this.nama = nama;
	}

}

Inilah sebuah java bean yang sederhana. Sebelum pakai Hibernate kita seharusnya 1. membuat tabel orang di basis data pakai SQL dan 2. membuat sebuah class dengan perintah2 JDBC insert(Orang orang), select(Long id), update(Orang orang), delete(Long id) dll. Untung keduanya ini bisa dilakukan oleh Hibernate sendiri, kita aja pakai beberapa annotations dari Java Persistence API.

import javax.persistence.*;

@Entity
public class Orang {

	private Long id;
	private String nama;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNama() {
		return nama;
	}
	public void setNama(String nama) {
		this.nama = nama;
	}

}

@Entity arti bahwa semua obyek yang dibuat dari class Orang bisa dinyimpan di basis data. Hibernate akan membuat tabel bernama orang dengan cara otomatis.

@id arti bahwa id adalah kunci utama (primary key) di basis data.

@GeneratedValue arti bahwa basis data akan secara otomatis isi idnya. (Kalau di MySQL inilah AUTO_INCREMENT)

Langkah 7. Sudah saatnya buat aksi

Membuat tabel di basis data:

	// perintah2 biasa
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Orang.class);
	config.configure();

	// membuat tabel di basis data
	new SchemaExport(config).create(true, true);

Pada perintah2 biasa class Orang ditambah config.addAnnotatedClass(Orang.class);. Kemudian konfigurasi yang dalam hibernate.cfg.xml dibaca barang2 sama class2 yang mempunyai syinal @Entity config.configure();.

Kalimat new SchemaExport(config).create(true, true); membuat tabel di basis data mulai dari nol. Kalau tabel ini sudah didefinisikan di basis data, kalimat ini akan hapus tabel dan semua datanya lalu membuat yang baru.

Untuk memastikan tulislah di command prompt MySQL show tables;.

Menyimpan sebuah obyek di basis data:

	// perintah2 biasa
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Orang.class);
	config.configure();

	// kita mau memasukan di basis data Presiden Susilo Bambang Yudoyono
	Orang orang = new Orang();
	orang.setNama("Presiden Susilo Bambang Yudoyono");

	// kalimat ini sangat mahal buat memori dan prosesor – 1 kali setiap aplikasi mulai
	SessionFactory factory = config.buildSessionFactory();
	// minta session
	Session session = factory.getCurrentSession();
	
	// menyimpan
	session.beginTransaction();
	session.save(orang);
	session.getTransaction().commit();

SessionFactory factory = config.buildSessionFactory(); sangat mahal. Maka obyek factory bagus kalau dibuat sekali aja sejak aplikasi hidup. (misalnya pakai cara singleton).

Untuk memastikan tetiklah di command prompt MySQL SELECT * FROM orang;.

Kalau kalimat2 yang biasa dimasukan di sebuah class yang mempunyai utility static yang tadi jadi aja:

	// kita mau menyimpan di basis data Presiden Susilo Bambang Yudoyono
	Orang orang = new Orang();
	orang.setNama("Presiden Susilo Bambang Yudoyono");
	DataBase.save(orang);

Kesimpulan: Kita membangun aplikasi lebih cepat karena kalau pakai Hibernate tidak perlu 1. membuat sendiri tabel2 di basis data pakai SQL 2. tulis class2 JDBC yang panjang dengan operasi paling terbiasa (cari, ubah, hapus, masuk).

Hibernate σε 10 λεπτά

20 March 2008

Tο hibernate είναι ένας γρήγορος τρόπος να αποθηκεύονται / ανακτώνται δεδομένα από μια βάση δεδομένων.

Τα βήματα 1-5 είναι καθαρή προετοιμασία, ενώ στα 2 τελευταία συμβαίνει όλη η δράση.

Βήμα 1. Κατέβασε όλα τα απαραίτητα

Στο βήμα αυτό κατεβάζεις όλα τα απαραίτητα αρχεία και jarάκια.

Κατέβασε την mySQL από το mysql.com → downloads → MySQL Community Server → Windows ZIP/Setup.EXE (x86) → Pick a mirror → No thanks, just take me to the downloads → Greece [University Of Ioannina] HTTP → mysql-5.0.51b-win32.zip

Κατέβασε τον JDBC driver της από το mysql.com → downloads → Connectors → Connector/J → Source and Binaries (zip) → Pick a mirror → No thanks, just take me to the downloads → Greece [University Of Ioannina] HTTP → mysql-connector-java-5.1.6.zip

Κατέβασε τον hibernate core από το hibernate.org → Download → Hibernate Core → Download → hibernate-3.2.6.ga.zip

Κατέβασε τα hibernate annotations από το hibernate.org → Download → Hibernate Annotations → Download → hibernate-annotations-3.3.1.GA.zip

Βήμα 2. Φτιάξε το σχήμα της βάσης

Στο βήμα αυτό εγκαθιστάς την MySQL, την ρυθμίζεις και φτιάχνεις το σχήμα βάσης με όνομα heat

Η ΜySQL εγκαθίσταται πολύ εύκολα. Στο τέλος της εγκατάστασης ανοίγει ένας οδηγός ρυθμίσεων. Καλό είναι να σημείωσεις σε ένα χαρτί τον κωδικό του διαχειριστή (root).

Πήγαινε Start → Programs → MySQL → MySQL Server 5.0 → MySQL Command Line Client → δώσε τον κωδικό του root.

Γράψε την εντολή CREATE DATABASE heat;

Για επιβεβαίωση γράψε show databases; κι έπειτα use heat;

Είναι χρήσιμο να αφήσεις ανοιχτό το command prompt της MySQL καθώς θα χρειαστεί πιο κάτω.

Όπως φαίνεται έφτιαξες μόνο το σχήμα της βάσης. Τα tables θα τα φτιάξει το hibernate!

Βήμα 3. Μάζεψε όλα τα jarάκια

Στο βήμα αυτό συγκεντρώνεις όλα τα απαραίτητα jarάκια σε έναν κατάλογο, ώστε αργότερα να τα δηλώσεις στο classpath.

Φτιάξε έναν φάκελο π.χ. C:/jars και βάλε μέσα:

  • το hibernate-3.2.6.ga.zip/hibernate3.jar
  • ό,τι υπάρχει μέσα στον κατάλογο hibernate-3.2.6.ga.zip/lib
  • το hibernate-annotations-3.3.1.GA.zip/hibernate-annotations.jar
  • τα hibernate-annotations-3.3.1.GA.zip/lib/hibernate-commons- annotations.jar και ejb3-persistence.jar
  • τον JDBC driver mysql-connector-java-5.1.6.zip/mysql-connector- java-5.1.6-bin.jar

Βήμα 4. Φτιάξε το project.

Φτιάξε ένα project στο Eclipse με το όνομα Hibernate.

Δήλωσε στο classpath τον κατάλογο με τα jarάκια ως εξής:

Project → Properties → Java Build Path → Add External JARs…

Βήμα 5. Γράψε το hibernate.cfg.xml

Στο βήμα αυτό δηλώνεις στο hibernate ποια είναι η βάση δεδομένων και πώς να συνδεθεί με αυτή.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
   <session-factory>
      <!-- Database connection settings -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="connection.url">jdbc:mysql://localhost/heat</property>
      <property name="connection.username">root</property>
      <property name="connection.password">12345</property>

      <!-- SQL dialect -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

      <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
      <property name="current_session_context_class">thread</property>

      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>
   </session-factory>
</hibernate-configuration>

Τα properties connection.* είναι ό,τι ακριβώς κάνουμε και στο JDBC. Πρόσεξε να βάλεις το σωστό password!

Ενδιαφέρον παρουσιάζει το SQL dialect: Δηλώνουμε στο hibernate ότι θα μιλάει με βάση MySQL.

Βάλε το αρχείο hibernate.cfg.xml μέσα στoν κατάλογο του project, πχ. C:/Eclipse/workspace/Hibernate. Αρκεί να βρίσκεται στο classpath.

Βήμα 6. Φτιάξε το μοντέλο

Η εφαρμογή διαχειρίζεται άτομα. Για κάθε άτομο μας ενδιαφέρει το όνομά του κι ένας μοναδικός αριθμός.

κλάση: Person

κατάσταση: Long id, String name

συμπεριφορά: setId(), getId(), setName(), getName()

public class Person {

	private Long id;
	private String name;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

Πρόκειται για ένα απλό java bean. Αυτό που κάναμε μέχρι τώρα ήταν η δημιουργία α. ενός table person στη βάση δεδομένων και β. μιας κλάσης με καθαρό JDBC: insert(Person person), select(Long id), update(Person person), delete(Long id) κλπ. Πλέον αυτά τα αναλαμβάνει το Hibernate, εμείς απλά χρησιμοποιούμε annotations του Java Persistence API.

import javax.persistence.*;

@Entity
public class Person {

	private Long id;
	private String name;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

Το Entity δηλώνει ότι τα αντικείμενα που δημιουργούνται από την κλάση Person είναι προς αποθήκευση στη ΒΔ. Μάλιστα υπάρχει η δυνατότητα το Hibernate να δημιουργήσει μόνο του το αντίστοιχο table στη βάση.

To id δηλώνει το κύριο κλειδί.

Το GeneratedValue δηλώνει ότι η βάση δεδομένων αναλαμβάνει τη μοναδικότητα του id. (Στη MySQL είναι η ένδειξη AUTO_INCREMENT)

Βήμα 7. Ώρα για δράση

Δημιούργησε το table person στη βάση ως εξής:

	// συνηθισμένη αρχικοποίηση
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Person.class);
	config.configure();

	// δημιούργησε το table στη βάση δεδομένων
	new SchemaExport(config).create(true, true);

Κατά τη συνηθισμένη αρχικοποίηση προστίθεται η κλάση Person config.addAnnotatedClass(Person.class);. Αμέσως μετά διαβάζονται οι ρυθμίσεις από το hibernate.cfg.xml καθώς και οι κλάσεις που έχουν @Entity config.configure();. Αυτές οι προτάσεις ανήκουν λογικά σε κάποιον constructor.

Η πρόταση new SchemaExport(config).create(true, true); δημιουργεί τα tables στη βάση δεδομένων από το μηδέν. Σε περίπτωση που τα tables είχαν ήδη οριστεί, τα ξαναδημιουργεί σβήνοντας όλα τα δεδομένα τους.

Για επιβεβαίωση γράψε στο command prompt της MySQL show tables;.

Αποθήκευσε ένα αντικείμενο στη βάση

	// συνηθισμένη αρχικοποίηση
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Person.class);
	config.configure();

	// θέλουμε να αποθηκεύσουμε στη βάση τον Vincent Hanna
	Person person = new Person();
	person.setName("Vincent Hanna");

	// χρονοβόρα αρχικοποίηση - 1 φορά για κάθε εφαρμογή
	SessionFactory factory = config.buildSessionFactory();
	// πάρε το session
	Session session = factory.getCurrentSession();
	// αποθήκευσε
	session.beginTransaction();
	session.save(person);
	session.getTransaction().commit();

H πρόταση SessionFactory factory = config.buildSessionFactory(); κοστίζει πολύ. Ως εκ τούτου το αντικείμενο factory καλό είναι να δημιουργείται 1 φορά ανά εφαρμογή. (πχ. στρατηγική singleton).

Για επιβεβαίωση γράψε στο command prompt της MySQL SELECT * FROM person;.

Χρησιμοποιώντας μια κλάση με utility static μεθόδους το παραπάνω γράφεται

	// θέλουμε να αποθηκεύσουμε στη βάση τον Vincent Hanna
	Person person = new Person();
	person.setName("Vincent Hanna");
	DataBase.save(person);

Συμπέρασμα: Κερδίζουμε σε χρόνο επειδή πλέον δεν χρειάζεται 1. να δημιουργήσουμε με το χέρι τα tables στη βάση δεδομένων και 2. να γράψουμε μακροσκελείς JDBC κλάσεις με τις συνηθισμένες λειτουργίες (εισαγωγή, αλλαγή, επιλογή, διαγραφή).