Hibernate

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Hibernate
Hibernate.gif
Розробник(и) Red Hat
Стабільний випуск 4.0.1 (11 січня 2012 )
Операційна система Cross-platform
Платформа Java
Тип ORM
Ліцензія LGPL
Сайт www.hibernate.org

Hibernate — засіб відображення між об'єктами та реляційними структурами (object-relational mapping, ORM) для платформи Java. Hibernate є вільним програмним забезпеченням, яке поширюється на умовах GNU Lesser General Public License. Hibernate надає легкий для використання каркас (фреймворк) для відображення між об'єктно-орієнтованою моделлю даних і традиційною реляційною базою даних.

Основні можливості[ред.ред. код]

Метою Hibernate є звільнення розробника від значних типових завдань із програмування взаємодії з базою даних. Розробник може використовувати Hibernate як при розробці з нуля, так і для вже існуючої бази даних.

Hibernate піклується про зв'язок класів з таблицями бази даних (і типів даних мови програмування із типами даних SQL), і надає засоби автоматичної побудови SQL запитів й зчитування/запису даних, і може значно зменшити час розробки, який зазвичай витрачається на ручне написання типового SQL і JDBC коду. Hibernate генерує SQL виклики і звільняє розробника від ручної обробки результуючого набору даних, конвертації об'єктів і забезпечення сумісності із різними базами даних.

Hibernate забезпечує прозору підтримку збереження даних, тобто їхньої персистентності (англ. persistence) для «POJO»-об'єктів, себто для звичайних Java-об'єктів; єдина сувора вимога до класу, що зберігається — конструктор за замовчанням (Для коректної поведінки у деяких застосуваннях потрібно приділити особливу увагу до методів equals() і hashCode()[1]).

Mapping[ред.ред. код]

Mapping (співставлення, буквально - картування) Java класів з таблицями бази даних здійснюється за допомогою конфігураційних XML файлів або Java анотацій. При використанні файлу XML, Hibernate може генерувати скелет вихідного коду для класів тривалого зберігання (persistent). У цьому немає необхідності, якщо використовується анотація. Hibernate може використовувати файл XML або анотації для підтримки схеми бази даних.

Забезпечуються можливості з організації відношення між класами «один-до-багатьох» і «багато-до-багатьох». На додаток до управління зв'язками між об'єктами, Hibernate також може керувати рефлексивними асоціаціями, де об'єкт має зв'язок «один-до-багатьох» з іншими примірниками свого власного типу даних.

Hibernate підтримує відображення користувацьких типів значень. Це робить можливим такі сценарії:

  • Перевизначення типу за замовчуванням SQL, який Hibernate вибирає при відображенні стовпчика властивості.
  • Картування перераховуваного типу Java до колонок БД, так ніби вони є звичайними властивостями.
  • Картування однієї властивості в декілька колонок.

Персистентність[ред.ред. код]

Hibernate забезпечує прозоре збереження POJO (Plain Old Java Objects - простих старих об'єктів Java). Єдина сувора вимога для персистентного класу — конструктор без аргументів, не обов'язково публічний. Для правильної поведінки деяких програм також потрібна особлива увага до методів equals() і hashCode(). [1]

Колекції об'єктів даних, як правило, зберігаються у вигляді колекцій Java-об'єктів, таких як набір (Set) і список (List). Підтримуються узагальнені класи (Generics), введені в Java 5. Hibernate може бути налаштований на «ледачі» (відкладені) завантаження колекцій. Відкладені завантаження є варіантом за замовчуванням, починаючи з Hibernate 3.

Зв'язані об'єкти можуть бути налаштовані на каскадні операції. Наприклад, батьківський клас, Album (музичнй альбом), може бути налаштований на каскадне збереження і/або видалення свого нащадка Track. Це може скоротити час розробки і забезпечити цілісність. Функція перевірки зміни даних (dirty checking) дозволяє уникнути непотрібного запису дій в базу даних, виконуючи SQL оновлення тільки при зміні полів персистентних об'єктів.

Мова запитів Hibernate (HQL)[ред.ред. код]

Hibernate забезпечує використання SQL-подібної мови Hibernate Query Language (HQL), яка дозволяє виконувати SQL-подібні запити, записані поряд з об'єктами даних Hibernate. Запити критеріїв надаються як об'єктно-орієнтована альтернатива до HQL.

Інтегрування[ред.ред. код]

Hibernate може використовуватись як у самостійних програмах Java, так і в програмах Java EE, що виконуються на сервері (наприклад, сервлети чи EJB session beans). Також він може включатись як додаткова можливість до інших мов програмування. Наприклад, Adobe інтегрував Hibernate у дев'яту версію ColdFusion (що запускається на серверах з підтримкою додатків J2EE) з рівнем абстракції нових функцій і синтаксису, доданих до CFML.

Компоненти[ред.ред. код]

  • Hibernate Core — ядро Hibernate для Java, власний API та метадані відображення у форматі XML
  • Hibernate Annotations — відображення за допомогою аннотацій JDK 5.0, як стандартних для JPA, так і власних розширень
  • Hibernate EntityManager — реалізація Java Persistence API для Java SE і Java EE
  • Hibernate Shards — Horizontal data partitioning framework
  • Hibernate Validator — Data integrity annotations and validation API
  • Hibernate Search — Hibernate integration with Lucene for indexing and querying data
  • Hibernate Tools — Засоби розробки для Eclipse та Ant
  • NHibernate — NHibernate сервіс для .NET платформи
  • JBoss Seam — Каркас для JSF, Ajax, та EJB 3.0/Java EE 5.0 додатків

Історія[ред.ред. код]

  • липень 2002 — версія 1.0
  • червень 2003 — версія 2.0
  • 31 березня 2005 — версія 3.0
  • 16 жовтня 2006 — Hibernate Core, Annotations, Entity Manager 3.2.0.GA — підтримка JPA
  • 19 березня 2007 — Hibernate Validator 3.0.0.GA
  • 23 вересня 2007 — Hibernate Search 3.0.0.GA

Література[ред.ред. код]

Аналоги на інших платформах[ред.ред. код]

  • NHibernate — аналогічне рішення для платформи .NET
  1. [Http: / / www.hibernate.org/109.html Так само і хеш-код]