Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/40: Рейтинг темы: голосов - 40, средняя оценка - 4.65
1 / 1 / 0
Регистрация: 10.11.2011
Сообщений: 85

Создать таблицу в БД средствами Hibernate

23.07.2016, 20:44. Показов 8677. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть зависимости
Java
1
2
3
4
    <properties>
        <hibernate.version>5.2.1.Final</hibernate.version>
        <mysql-connector-java>5.1.39</mysql-connector-java>
    </properties>
Класс создания SessionFactory
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class HibernateUtil {
    private static SessionFactory sessionFactory;
 
    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null) {
            // loads configuration and mappings
            Configuration configuration = new Configuration().configure();
            ServiceRegistry serviceRegistry
                    = new StandardServiceRegistryBuilder()
                    .applySettings(configuration.getProperties()).build();
 
            // builds a session factory from the service registry
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        }
 
        return sessionFactory;
    }
}
Класс сущности
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class User implements Serializable{
    private long id;
    private int age;
    private String firstname;
    private String lastname;
 
    public User() {
    }
 
    public User(long id) {
        this.id = id;
    }
 
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public String getFirstname() {
        return firstname;
    }
 
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
 
    public String getLastname() {
        return lastname;
    }
 
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}
Класс маппинга сущности
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
    <class name="User" table="user">
        <id name="id" column="id"><!--Primary Key: поле класса, колонка таблицы-->
            <generator class="native"/><!--нативная генерация id-->
        </id>
        <property name="firstname" column="first_name" type="string"/>
        <property name="lastname" column="last_name" type="string"/>
        <property name="age" column="age" type="int"/>
    </class>
</hibernate-mapping>
в котором содержание тэгов table и column отмечаются красным, так как "таблица не существует". Ещё бы, я хочу, чтобы код её сам и создал.

Общий фал конфигурации:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    <property name="hibernate.connection.pool_size">1</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <!-- DB schema will be updated if needed -->
    <property name="hibernate.hbm2ddl.auto">create</property>
 
    <mapping resource="user.cfg.xml"/>
 
  </session-factory>
</hibernate-configuration>
по идее, учитывая последние две строки внутри тэга <session-factory>, таблица должна была создаться. В чём дело?

в консоли:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/usr/lib/jvm/java-8-oracle/bin/java -Didea.launcher.port=7536 -Didea.launcher.bin.path=/opt/idea-IU-162.1121.32/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/lib/deploy.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/jaccess.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/jfxrt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/nashorn.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-8-oracle/jre/lib/javaws.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfxswt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/management-agent.jar:/usr/lib/jvm/java-8-oracle/jre/lib/plugin.jar:/usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/home/nicolas/dev/projects/TopJava/HiberTest/target/classes:/home/nicolas/.m2/repository/org/hibernate/hibernate-core/5.2.1.Final/hibernate-core-5.2.1.Final.jar:/home/nicolas/.m2/repository/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar:/home/nicolas/.m2/repository/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar:/home/nicolas/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar:/home/nicolas/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/home/nicolas/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1.1/geronimo-jta_1.1_spec-1.1.1.jar:/home/nicolas/.m2/repository/org/jboss/jandex/2.0.0.Final/jandex-2.0.0.Final.jar:/home/nicolas/.m2/repository/com/fasterxml/classmate/1.3.0/classmate-1.3.0.jar:/home/nicolas/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/home/nicolas/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.1.Final/hibernate-commons-annotations-5.0.1.Final.jar:/home/nicolas/.m2/repository/javax/enterprise/cdi-api/1.1-PFD/cdi-api-1.1-PFD.jar:/home/nicolas/.m2/repository/javax/el/el-api/2.2/el-api-2.2.jar:/home/nicolas/.m2/repository/org/jboss/spec/javax/interceptor/jboss-interceptors-api_1.1_spec/1.0.0.Beta1/jboss-interceptors-api_1.1_spec-1.0.0.Beta1.jar:/home/nicolas/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/home/nicolas/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/home/nicolas/.m2/repository/org/hibernate/hibernate-entitymanager/5.2.1.Final/hibernate-entitymanager-5.2.1.Final.jar:/home/nicolas/.m2/repository/org/hibernate/hibernate-validator/5.2.1.Final/hibernate-validator-5.2.1.Final.jar:/home/nicolas/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/home/nicolas/.m2/repository/mysql/mysql-connector-java/5.1.39/mysql-connector-java-5.1.39.jar:/opt/idea-IU-162.1121.32/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain Main
июл 23, 2016 8:26:33 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.1.Final}
июл 23, 2016 8:26:33 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
июл 23, 2016 8:26:33 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
июл 23, 2016 8:26:34 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
июл 23, 2016 8:26:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
июл 23, 2016 8:26:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/test]
июл 23, 2016 8:26:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
июл 23, 2016 8:26:34 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
июл 23, 2016 8:26:34 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
июл 23, 2016 8:26:34 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
июл 23, 2016 8:26:35 PM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.2.1.Final
июл 23, 2016 8:26:35 PM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources
INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@74f6c5d8'
Добавлено через 19 минут
Сменил версии на
<hibernate.version>4.3.10.Final</hibernate.version>
<mysql-connector-java>5.1.39</mysql-connector-java>
, заработало. Но это не выход, так что дайте ответ для новых версий, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2016, 20:44
Ответы с готовыми решениями:

Создать новую таблицу в Access'e средствами Delphi и SQL
Всем здравствуйте! Итак, сначало описание. Есть форма с полями (Edit'ами) в которые я заношу названия моих столбцов для новой таблицы. ...

Можно ли создать таблицу в Базе, имея ее описание в другой таблице, средствами VBA?
Здравствуйте! Подскажите пожалуйста, можно ли создать таблицу в Базе, имея ее описание в другой таблице? Например там описаны Название...

Вставка данных в таблицу в Hibernate
Здравствуйте. Помогите пожалуйста решить следующую проблему. Хочу добавить данные в таблицу MySQL базы. Успешно делаю это с помощью...

10
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.07.2016, 23:37
Лучший ответ Сообщение было отмечено Nicolazz как решение

Решение

Nicolazz, все ваше решение это не выход. Конфигурации через XML уже давно устарели. Сешн фактори тоже уже никто руками не создает. Какая ваша конечная цель?
1
1 / 1 / 0
Регистрация: 10.11.2011
Сообщений: 85
24.07.2016, 01:38  [ТС]
KEKCoGEN, нужно реализовать простенькое приложение todolist, для отображения списка дел. Оно должно показывать список уже созданных дел. Каждое из них можно редактировать, добавлять новые, отмечать как «Выполнено», удалять. Список можно фильтровать. Это тестовое задание на одну стажировку, сказали, просто чтобы работало, ничего серьёзного.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
24.07.2016, 08:19
Nicolazz, spring-boot + vaadin вам поможет. Показывать на стажировку то что вы запостили выше это не вариант как по мне. На этой связке сделать ваше задание можно часа за 2. У вас думаю возьмет побольше т.к вы не знакомы со spring-boot, но думаю за день справитесь при активном использовании гугла.
1
1 / 1 / 0
Регистрация: 10.11.2011
Сообщений: 85
24.07.2016, 10:46  [ТС]
KEKCoGEN, запросили стек Maven + Spring + Hibernate + Tomcat + Mysql + Frontend: angular.js or Vaadin or ZK framework or Spring MVC, так что надо именно это. А к Vaadin я давно присматриваюсь, но никак не могу понять, как вообще на нём писать? Есть что-то типа быстрого старта?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
24.07.2016, 11:00
Цитата Сообщение от Nicolazz Посмотреть сообщение
запросили стек Maven + Spring + Hibernate + Tomcat + Mysql + Frontend: angular.js or Vaadin or ZK framework or Spring MVC
я вам выше этот стек и предложил.

П.С кликайте на ник когда обращаетесь к какому-то юзеру. Так ему приходят нотификации.
1
1 / 1 / 0
Регистрация: 10.11.2011
Сообщений: 85
24.07.2016, 19:56  [ТС]
KEKCoGEN, убрал из hibernate.cfg.xml строку <mapping resource="user.cfg.xml"/>, добавил <mapping class="User"/>.

Переписал слегка класс User:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import javax.persistence.*;
 
/**
 * Created by nicolas on 23.07.16 at 14:55 at 14:55.
 */
 
@Entity
@Table(name = "user")
public class User{
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private long id;
 
    @Column
    private int age;
 
    @Column(length = 500)
    private String firstname;
 
    @Column
    private String lastname;
 
    public User() {
    }
 
    public User(long id) {
        this.id = id;
    }
 
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public String getFirstname() {
        return firstname;
    }
 
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
 
    public String getLastname() {
        return lastname;
    }
 
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}
стало красивше, но в 5й версии, в отличие от 4й, всё ещё не работает.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
24.07.2016, 20:09
Nicolazz, ещё раз говорю. Удалите все xml. Убогие старые конфигурации может вам кто-то другой будет помогать настраивать. Я уже написал выше как делаются такие приложения.
1
1 / 1 / 0
Регистрация: 10.11.2011
Сообщений: 85
24.07.2016, 20:23  [ТС]
KEKCoGEN, аа, а я думал, вы имели ввиду, что только таблицу ими создавать нельзя. Понял, спасибо)
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
24.07.2016, 20:53
Лучший ответ Сообщение было отмечено Nicolazz как решение

Решение

Nicolazz, в интернете полно примеров конфигурации
1
30 / 10 / 1
Регистрация: 14.03.2013
Сообщений: 53
09.02.2017, 20:03
Давно вышел Hibernate 5.0, насколько я помню, всю конфигурацию можно просто представить в виде джава файла...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.02.2017, 20:03
Помогаю со студенческими работами здесь

(Hibernate) Не удается записать сущность в таблицу
Имеется EntityManager, у которого вызывается метод persist и передается заполненный объект. Заполняю следующим образом: Person p...

Ошибка при добавлении записи в таблицу Hibernate
package kurs.stu.forum.jpa; import java.io.Serializable; import javax.persistence.*; import java.util.Date; import...

Hibernate: получение значений таблицы через третью таблицу
Добрый день. Есть три таблицы: &quot;cars&quot;, &quot;details&quot; и &quot;detail_car&quot;. У каждой таблицы есть id, у &quot;detail_car&quot; еще колонки car_id и...

Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи в таблицу
Здравствуйте! Есть заполненная вручную таблица employee_history, редактирование и удаление записей таблицы проходит нормально. Но при...

Из БД в html таблицу средствами php
На сайте заполняется форма, и информация отправляется в БД. Вот так выглядит небольшой участок: Соответственно, sub_id номер одной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru