betacode

Используйте инструменты Hibernate для создания классов Entity из таблиц

  1. Введение
  2. Пример базы даных, использованной в этом документе
  3. Подключить Database через "Database Development"
  4. Создать Project
  5. Конфигурация Hibenate
  6. Аппендикс: Ошибка при создании entity
  7. Рукводство Hibernate

1. Введение

This document is based on:
  • Eclipse 4.5 (MARS)

  • Hibernate 5.1.0.Final

  • Hibernate Tools 4.3.1.Final.html

(Last update document: 21-05-2016).
Для начала, вам нужно удостовериться что вы установили "Hibernate Tools" в Eclipse. "Hibernate Tools" это один из инструментов в JBoss - "JBoss Tools".
Смотрите так же:

2. Пример базы даных, использованной в этом документе

База данных, использующаяся для иллюстрации в данной статье является "simplehr". Можете посмотреть по ссылке:

3. Подключить Database через "Database Development"

В Eclipse выбрать:
  • Window/Perspective/Open Perspective/Other...
Создать новое connection к базе данных simplehr:
В данном руководстве я соединю к базе данных Oracle. Вы можете соединить к другой базе данных, способ выполнения будет абсолютно таким же.
Нажмите на значок, чтобы объявить Driver для выбранной вами базы данных.
Нажмите на "Add JAR/Zip"
Введите информацию, чтобы подключить к базе данных. Затем, нажмите "Test Connection" чтобы удостовериться в успешном подключении к базе данных.
Вы моежете увидеть структуру вашей базы данных в "Data Source Explorer".
Попробуйте запросить query данные в таблице.

4. Создать Project

Введите:
  • Group Id: org.o7planning
  • Artiface Id: HibernateGenerateEntities
Project создан:
Объявить библиотеку Hibernate 5, и библиотеки JDBC для Oracle, MySQL, SQL Server.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.o7planning</groupId>
  <artifactId>HibernateGenerateEntities</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>HibernateGenerateEntities</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

 <repositories>
     <!-- Repository for ORACLE JDBC Driver -->
     <repository>
         <id>codelds</id>
         <url>https://code.lds.org/nexus/content/groups/main-repo</url>
     </repository>
 </repositories>


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
   <!-- Hibernate -->
     <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-core</artifactId>
         <version>5.1.0.Final</version>
     </dependency>

     <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-entitymanager</artifactId>
         <version>5.1.0.Final</version>
     </dependency>


     <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-c3p0</artifactId>
         <version>5.1.0.Final</version>
     </dependency>


     <!-- MySQL JDBC driver -->
     <!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.34</version>
     </dependency>

     <!-- Oracle JDBC driver -->
     <dependency>
         <groupId>com.oracle</groupId>
         <artifactId>ojdbc6</artifactId>
         <version>11.2.0.3</version>
     </dependency>

   <!-- SQLServer JDBC driver (JTDS) -->
   <!-- http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds -->
   <dependency>
       <groupId>net.sourceforge.jtds</groupId>
       <artifactId>jtds</artifactId>
       <version>1.3.1</version>
   </dependency>
            
  </dependencies>
 
</project>

5. Конфигурация Hibenate

"Hibernate Tools" позволяют создать визуальный файл конфигурации Hibernate. Теперь мы создадим файл "hibernate.cfg.xml" используя этот инструмент.
В Eclipse выбрать:
  • Window/Perspective/Open Perspective/Other...
Нажмите на правую мышь и выберите "Add Configuration.." чтобы создать файл конфигурации Hibernate.
Введите название файла "hibernate.cfg.xml", и положите в файл "src/main/java" в Project.
Вы можете ввести информацию в соединении базы данных или получить информацию подключения, которую вы объявляли ранее. Нажмите на "Get values from Connection".
Выберите Connection "Oracle (Simplehr)", которое вы создали ранее. Нажмите ОК чтобы продолжить.
Далее, выберите класс "dialect" соответствующий виду вашей базы данных. Для Oracle это будет Oracle10g, заметьте что класс dialect "Oracle10g" используется для 2 версий 10 и 11 Oracle.
Нажмите ОК, чтобы завершить конфигурацию. После этого будет файл "hibernate.cfg.xml" созданный в файле src/main/java вашего Project.
Конфигурация Hibernate создана. (Смотрите на Hibernate Configurations view)
Смотрите на "Package Explorer":
  • hibernate.cfg.xml
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.password">12345</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:db12c</property>
        <property name="hibernate.connection.username">simplehr</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    </session-factory>
    
</hibernate-configuration>
Далее мы конфигурируем, способ инструмента создавать классы entity из чтения структуры таблицы в Database.
  • Window/Perspective/Open Perspective/Hibernate
Заметка: Если процесс создания entity не удастся вы можете посмотреть как решить эту проблему в аппендиксе.

6. Аппендикс: Ошибка при создании entity

Может при создании Entity вы получите следующие ошибки:
** NoClassDefFoundError **
org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError,
probably the console configuration classpath is incomplete or contains conflicting versions of the same class
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
org.hibernate.console.HibernateConsoleRuntimeException:
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
java.lang.NoClassDefFoundError: org/apache/commons/collections/MultiMap
org/apache/commons/collections/MultiMap
java.lang.ClassNotFoundException: org.apache.commons.collections.MultiMap cannot be found by org.jboss.tools.hibernate.runtime.v_5_1_5.0.1.Final-v20160331-1852-B88
org.apache.commons.collections.MultiMap cannot be found by org.jboss.tools.hibernate.runtime.v_5_1_5.0.1.Final-v20160331-1852-B88
Вам нужно конфигурировать используя старую версию Hibernate.
Перезапустите для пересоздания Entity:

7. Рукводство Hibernate

Может вас интересует: