Когда вы используете EclipseLink (через JPA API) в приложении Java SE, вам нужно настроить вещи немного иначе, чем когда ваше приложение состоит из компонентов, работающих в контейнере Java EE.
Вы получаете EntityManager
с такими строками:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-app");
EntityManager em = emf.createEntityManager();
И ваше приложение должно иметь файл persistence.xml
в каталоге META-INF
файла JAR вашего приложения. Вы настраиваете JPA в этом файле; Вещи, которые вы помещаете туда, сообщают Java, какой поставщик сохраняемости следует использовать и каковы параметры соединения для вашей базы данных.
Имя единицы сохраняемости ("my-app"
в примере выше) должно совпадать с именем, указанным в элементе persistence-unit
в persistence.xml
.
См. этот пример EclipseLink , который показывает, как должен выглядеть ваш persistence.xml
.
EntityManager
содержит такие методы, как persist(Object)
, которые можно использовать для сохранения сущностей в базе данных (см. в этих примерах , показывающих, как использовать EntityManager
).
Ваш объект POJO должен иметь столбец, который будет содержать идентификатор объекта, и он должен иметь конструктор без аргументов:
@Entity
public class Example {
@Id
@GeneratedValue
private long id;
// ... Add other properties here
// Required no-args constructor
public Example() {
}
// ... Add getters and setters here
}
Добавление
Вы можете сохранить объект в базе данных, используя EntityManager
, как показано в следующем коде. Не нужно использовать UnitOfWork
(насколько я знаю, UnitOfWork
- это то, что вам нужно при использовании более старого API JPA 1.0; вам не нужно это для JPA 2.0):
entityManager.getTransaction().begin();
entityManager.persist(myEntity);
entityManager.getTransaction().commit();