JPA вставить заявление - PullRequest
30 голосов
/ 21 июня 2010

Какой правильный синтаксис оператора вставки JPA?Это может звучать как простой вопрос, но я не смог найти ответ.

Я знаю, как сделать это из кода Java, но я ищу способ вставить объекты в базу данных, еслибаза данных создана.

Есть идеи?

Ответы [ 4 ]

28 голосов
/ 21 июня 2010

В JPA нет оператора INSERT. Вы должны вставить новые объекты, используя EntityManager. В JPA допускаются только операторы SELECT, UPDATE и DELETE.

17 голосов
/ 21 июня 2010

Вот хорошая ссылка о сохранении объектов JPA с использованием EntityManager.Например, вот как вставить объекты с помощью метода persist:

EntityManager em = getEntityManager();
em.getTransaction().begin();

Employee employee = new Employee();
employee.setFirstName("Bob");
Address address = new Address();
address.setCity("Ottawa");
employee.setAddress(address);

em.persist(employee);

em.getTransaction().commit();
5 голосов
/ 27 июня 2012

Если вы хотите вставить данные в базу данных вне Java, вам нужно использовать собственный SQL. Используйте стандарт SQL, чтобы убедиться, что большинство баз данных могут выполнять сценарий. При запуске приложения JPA выполнит сопоставление новых данных и при необходимости преобразует их в объекты.

Как убедиться, что скрипт работает во всех базах данных? хорошо, это та же проблема, что и у любого администратора баз данных при создании процедур хранения или собственных запросов ... вот почему существует JPA, чтобы не делать его напрямую в SQL, но я знаю, что иногда это необходимо.

Я предлагаю вам сделать 3 основных сценария. Один для Oracle, один для SQL Server (есть некоторые проблемы с типами дат дат от 2005 до 2008 версий, поэтому будьте осторожны) и один для MySQL. Запустите ваш скрипт со стандартным SQL, и когда вы протестируете его в этих базах данных, вы найдете некоторые исправления, которые вам нужно будет сделать для каждой СУБД.

Получив его, вы можете создать файл сценария файла (* .sql) и запустить его с менеджером БД. Если это работает, запустите сервер, поместите приложение в сеть, и данные будут просто интегрированы.

2 голосов
/ 29 июня 2012

Опция, которая выглядит более многообещающей, пока использует Flyway .Это более автоматизированный способ сделать это и обрабатывать процесс обновления баз в основном автоматически.

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