Лабораторная работа № 4

ЦЕЛЬ РАБОТЫ

Целью данной лабораторной работы является ознакомление с технологиями ORM и реализация взаимодействия с базой данных посредством ORM Hibernate.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Краткое введение в технологии ORM было осуществлено в первой части учебно-методического пособия. Существует множество реализаций технологии ORM на языке Java. Одна из этих реализаций — это Hibernate. Для того, чтобы использовать функционал hibernate, необходимо иметь:

  • — библиотеку ORM Hibernate, ее можно скачать с официального сайта производителя;
  • — JDBC (Java Data Base Connectivity) — это библиотека, позволяющая взаимодействие с различными СУБД. JDBC основан на концепции драйверов, позволяющих получить соединение с БД по специальному URL. Каждая БД имеет свою JDBC- библиотеку, которую можно загрузить с официального сайта используемой БД.

Создание конфигурации подключения к БД.

Основным классом hibernate-технологии, позволяющей читать, изменять, добавлять или удалять данные из СУБД, является Session. Для получения сессии необходимо изначально установить конфигурацию соединения с БД и получить с помощью созданной конфигурации фабрику сессий (SessionFactory), которая в итоге будет нам поставлять сессии. Конфигурацию соединения можно прописать двумя способами:

  • — через файл hibernate.cfg.xml;
  • — через класс org.hibernate.cfg.Configuration.

Сейчас рассмотрим эти два способа на примерах:

Файл hibernate.cfg.xml

  • 1.
  • 2. "http://www.hibernate.org/dtd/hibernate- configuration-3.0. dtd" >
  • 3. < hibernate-configuration >
  • 4. < session-factory >
  • 5. jdbc: sqlserver://localhost:1433; database=data_base
  • 6. com.microsoft. sqlserver.jdbc.SQLServerDriver
  • 7. sa < /property>
  • 8. l
  • 9. l
  • 10. thread < /property >
  • 11. update
  • 12. true
  • 13. org.hibernate.dialect. SQLServerDialect
  • 14. < /session-factory>
  • 15.

Первые две строчки — подключение спецификации (шаблона), с его помощью мы не ошибемся в синтаксисе и будем точно знать, где какой тег должен будет находиться и какие атрибуты он может иметь.

Необходимая информация содержится в строчках с 5 по 13, в них

прописаны непосредственно свойства подключения в БД:

  • — connection.url — url-строка подключения к БД. В данном примере осуществляется подключение к MS SQL Server. Разберем строчку детально: jdbc: sqlserver: — это некоторая спецификация, через что мы подключаемся и к какому серверу;: //localhost: 1433 — указываем ip-адресс или доменное имя компьютера с портом, к которому мы будем подключаться; database=data_base— указание, к какой базе мы будем подключаться;
  • — connection.driver_class — указание, какой драйвер будет использоваться в качестве связующего звена с СУБД. Здесь указывается класс JDBC-драйвера, который подключен к проекту, в примере указан драйвер MS SQL Server;
  • — connection.username — логин зарегистрированного пользователя СУБД;
  • — connection.password — пароль;
  • — connection.pool_size — данное свойство показывает, сколько соединений к БД может быть одновременно открыто;
  • — hbm2ddl.auto — свойство, указывает что нужно сделать со схемой БД при инициализации. Может принимать такие значения:
    • • update — сверяет схему БД с имеющимися конфигурациями классов, если были внесены какие-то изменения, они автоматически занесутся в БД. При этом данные, которые были занесены в базу, не изменятся;
    • • create — каждый раз при запуске приложения схема БД будет создаваться заново. Все данные, которые были занесены раньше, будут удалены;
    • • create-drop — каждый раз при запуске приложения схема БД будет создаваться заново, а при завершении — удаляться. Все данные, которые были занесены во время работы приложения, будут удалены по завершению приложения;
    • • validate — при инициализации будет совершена проверка соответствия конфигурации классов и схемы БД. Если мы внесли изменение в конфигурацию какого-то класса, а схема в БД не была изменена, сработает исключение;
  • — show_sql — данное свойство указывает, будут ли выводится SQL- запросы на консоль, которые отправляются на СУБД. В процессе отладки это бывает очень удобно;
  • — dialect — hibernate может работать с разными БД, и каждая имеет свои особенности (генерация первичного ключа, страничный вывод, функции), нужно указать какой диалект будем использовать для создания запросов. В данном случае — диалект MS SQL Server.

Класс org.hibernate.cfg.Configuration используется для подготовки данных соединения к СУБД.

  • 1. public static Configuration getConfiguration (){
  • 2. Configuration cfg = new Configuration ();
  • 3. cfg.setProperty ("hibernate.connection.url", "jdbc: sqlserver://localhost: 1433; database=data_base");
  • 4. cfg.setProperty ("hibernate.connection.driver_class", "com. microsoft.sqlserver.jdbc.SQLServerDriver");
  • 5. cfg.setProperty ("hibernate.connection.username","sa");
  • 6. cfg.setProperty ("hibernate.connection.password","l");
  • 7. cfg.setProperty ("hibernate.connection.pool_size","l");
  • 8. cfg.setProperty ("hibernate.current_session_context_ class","thread");
  • 9. cfg.setProperty ("hibernate.hbm2ddl.auto","update");
  • 10. cfg.setProperty ("hibernate.show_sql","true");
  • 11. cfg.setProperty ("hibernate.dialect","org.hibernate.dialect. SQLServerDialect");
  • 12. return cfg;
  • 13. }

Класс подключения к БД.

Когда создана конфигурация нужно создать класс отвечающий за создание сессий, так называемая фабрика сессий. Пример кода:

  • 1. private static SessionFactory sessionFactory = buildSessionFactoryO;
  • 2. private static SessionFactory buildSessionFactory () {
  • 3. try{
  • 4. if (sessionFactory = = null) {
  • 5. Configuration configuration = new Configuration ().configure (“HibernateUtil/hibernate.cfg.xml”);
  • 6. StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder O.applySettings (configuration. getProperties ());
  • 7. sessionFactory = configuration.buildSessionFactory (builder. buildQ);
  • 8. }
  • 9. return sessionFactory;
  • 10. } catch (Throwable ex) {
  • 11. System.err.println (“Initial SessionFactory creation failed.” + ex);
  • 12. throw new ExceptionlnlnitializerError (ex);
  • 13. }
  • 14. }
  • 15. public static Session getSession () {
  • 16. return sessionFactory.openSession ();
  • 17. }

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

5. Configuration configuration = getConfigurationf);

Метод getSession создает сессию, с помощью которой и будет происходить общение с БД.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >