class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

JDBC

загрузка драйвера
соединение с БД
выполнение запросов
параметризованные запросы

ODBC

ODBC
ODBC для wxWidgets
JDBC - ODBC мост

ADO

ADO

VCL

VCL компоненты

PHP

PHP

DBI (perl)

dbi пример

Hibernate

Hibernate

Справка по Hibernate

Hibernate приложение

Если бизнес логика приложения реализуется на уровне языка java, а не на уровне базы данных через хранимые процедуры, то можно воспользоваться библиотекой с открытым кодом hibernate. Среди всех ее возможностей главным является механизм отображения объектной модели приложения в реляционную модель базы данных. Более того, часто для управления соединениями и транзакциями пользуются другими инструментами, оставляя для hibernate только отображение. Для соединения библиотека использует конфигурационный файл hibernate.cfg.xml, в котором есть раздел с именами xml файлов описывающих отображения объектов в таблицы базы данных.

библиотека hibernate

Скачать hibernate с официального сайта проекта. В появившемся списке для скачки нам нужен Hibernate Core. В архиве также имеется библиотека вывода логов slf4j-api-1.5.2.jar, но ее не достаточно (вы можете получить одну из этих ошибок). Поэтому проще скачать последний архив slf, где есть недостающие файлы с официального сайта.

база данных

Запустим базу данных, например, MySQL локально со схемой test. Создадим в тестовой схеме таблицу obooks.


DROP TABLE IF EXISTS "test"."obooks";
CREATE TABLE  "test"."obooks" (
  "id" int(10) unsigned NOT NULL auto_increment,
  "bname" varchar(100) NOT NULL COMMENT 'имя книги',
  "aname" varchar(100) NOT NULL COMMENT 'имя автора',
  PRIMARY KEY  ("id")
);

В данном случае создание таблицы необязательно. Если таблицы нет, она будет создана автоматически.

Ниже приведен список поддерживаемых бд со строкой диалекта, указываемого в файле конфигурации:

подключение библиотек к проекту

Создадим в Eclipse новый проект. В первую очередь подключим библиотеку hibernate к проекту. Для третьей версии это hibernate3.jar и файлы из папки lib/request за исключением slf*.

Подключим slf библиотеку, в моем случае это были файлы slf4j-api-1.5.6.jar и slf4j-simple-1.5.6.jar.

И наконец подключим драйвер базы данных, например, mysql-connector-java-5.1.6-bin.jar для MySQL.

объект отображения

Добавим в проект класс ObjBook, описывающий книгу, для примера отображения объектов в таблицы базы данных.


public class ObjBook {
private long id; // для уникального ключа в БД
private String name; // имя книги
private String author; // имя автора

public ObjBook(){}
public ObjBook(int iid, String nname,String aauthor){
	id=iid;
	name=nname;
	author=aauthor;
}

public ObjBook(String nname,String aauthor){
	name=nname;
	author=aauthor;
}

// генерим средствами Eclipse 
// или пишем в ручную методы get/set
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;
}
public String getAuthor() {
	return author;
}
public void setAuthor(String author) {
	this.author = author;
}

}

файл конфигурации

Подготовим конфигурационный файл hibernate.cfg.xml и кинем его в папку bin, куда Eclipse выкладывает скомпилированные классы проекта. Если используется utf-8 и xml написан в Eclipse, то на всякий случай проверьте наличие в начале файла символов с кодами EF и BB (идентификатор utf-8 документа). Также обратите внимание на тип документа xml используемого hibernate, он обязателен.


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

<hibernate-configuration>
<session-factory>
   <property name="hibernate.connection.driver_class">
      com.mysql.jdbc.Driver
   </property>
   
   <property name="hibernate.connection.url">
      jdbc:mysql://localhost/test
   </property>
   
   <property name="hibernate.connection.username">root</property>
   <property name="hibernate.connection.password">root1</property>
   <property name="hibernate.connection.pool_size">10</property>
   <property name="show_sql">true</property>
   <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
   <property name="hibernate.hbm2ddl.auto">update</property>
 
   <!-- файл отображения -->
   <mapping resource="obooks.hbm.xml"/>
</session-factory>
</hibernate-configuration>

файл отображения

Подготовим файл obooks.hbm.xml для отображения объекта ObjBook в таблицу obooks и поместим туда же, куда и hibernate.cfg.xml. В качестве генератора первичного ключа, указано использование средств БД. Так что, значение заданное вами члену id класса ObjBook для вставки значения не имеет.


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class name="ObjBook" table="obooks">
   <id name="id" type="long" column="id" >
     <generator class="native"/>
   </id>

   <property name="name">
     <column name="bname"/>
   </property>
   
   <property name="author">
     <column name="aname"/>
   </property>
 </class>
</hibernate-mapping>

тестовое приложение hibernate

Ну а теперь, само приложение.


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HiberTest {

public static void main(String[] args) {

    ObjBook obook = new ObjBook(54,"Wyrd Sisters", "Pratchett");
    Session session = null;
    Transaction t=null;
		
    try {
        // открываем hibernate сессию
        // при этом читается файл конфигурации
        SessionFactory sessionFactory = new Configuration().configure()
            .buildSessionFactory();
        session = sessionFactory.openSession();

        // вставка записи
        t = session.beginTransaction(); 
        session.save(obook);
        t.commit();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        if (session != null) {
            session.flush(); 
            session.close();				
            }
        }
    }
}

Все. Запустим приложение. Если что не так, вы можете увидеть это по логам. После завершения программы, в базе в таблице obooks появится новая запись.


Рейтинг@Mail.ru