Сохранение сущностей в базе данных Java - PullRequest
0 голосов
/ 26 августа 2011

Я только начинаю работать с постоянством и базами данных при использовании веб-приложений. Я создал несколько классов сущностей и настроил соединение с базой данных в Eclipse, но я не уверен, как генерировать таблицы из этих сущностей. Это все, что мне удалось придумать:

public class Main {

    @Resource
    static UserTransaction utx;

    @PersistenceUnit
    static EntityManagerFactory emf;

  public static void main(String[] args) throws Exception {
    EntityManager em = emf.createEntityManager();
    utx.begin();
    em.joinTransaction();

    User user = new User();
    user.setUsername("cvolkernick");

    em.persist(user);

    utx.commit();

    em.flush();

    em.close();
    emf.close();
  }
}

1 Ответ

3 голосов
/ 26 августа 2011

Вы можете создавать таблицы из объявлений сущностей, используя Dali JPA Tools.Пока ваш проект настроен с использованием фасета JPA, у вас будет доступ к этим инструментам.Создать таблицы из сущностей так же просто, как щелкнуть правой кнопкой мыши ваш проект, а затем просмотреть контекстное меню, как показано на снимке экрана ниже:

Eclipse- JPA - Create Tables from Entities

Обратите внимание, что это предпочтительнеесоздавать таблицы таким способом или вручную кодировать операторы DDL.Не рекомендуется, чтобы поставщик JPA создавал таблицы для вас, так как вы потеряли бы возможность помещать определения таблиц под контроль версий.Они также неоптимальны и не предназначены для использования в производстве .Даже для небольших проектов это не стоит проблем, так как возможности поставщика JPA (EclipseLink или Hibernate) генерировать точно настроенные операторы DDL весьма ограничены.В любом случае, если вы хотите, чтобы поставщик JPA выполнял эту работу за вас, подробности следующие:

Если вашим поставщиком JPA является EclipseLink :

Ваша настойчивостьXML-файл должен выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<persistence ...>
    <persistence-unit ...>
        ...
        <properties>
            <!-- valid values include 'none, 'drop-and-create-tables' and 'create-tables' -->
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <!-- valid values include 'both', 'database' and 'sql-script' -->
            <property name="eclipselink.ddl-generation.output-mode" value="database"/>
            ...
        </properties>
    </persistence-unit>
</persistence>

Вы можете настроить эти значения из Eclipse, открыв файл persistence.xml с помощью XML-редактора Persistence:

EclipseLink Persistence XML editor

Подробную информацию о свойствах и значениях генерации схемы EclipseLink можно найти в EclipseLink wiki .

Если ваш поставщик JPA - Hibernate :

Ваш файл persistence.xml должен выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<persistence ...>
    <persistence-unit ...>
        ...
        <properties>
            <!-- valid values include 'validate', 'update', 'create' and 'create-drop' -->
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            ...
        </properties>
    </persistence-unit>
</persistence>

В отличие от значений EclipseLink, значения для Hibernate не могут быть сконфигурированы из XML-редактора Persistence Eclipse.Вы можете найти другие свойства Hibernate в документации Hibernate Core .

Также обратите внимание, что в случае EclipseLink и Hibernate вам может потребоваться указать дополнительные свойства, такие как конфигурация пула соединений.и диалект базы данных, чтобы помочь генераторам схемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...