2013-08-14 3 views
0

Я новичок в Hibernate. Чтобы получить транзакцию EntityManager, мне нужно использовать EntityManager Factory. Когда я поставил этот блок кода на моем файле:Расположение persistence.xml в приложении клиента Java

EntityManagerFactory entityManagerFactory = Persistence 
      .createEntityManagerFactory("Comment"); 

EntityManager entityManager = entityManagerFactory.createEntityManager(); 

EntityTransaction transaction = entityManager.getTransaction(); 

transaction.begin(); 
entityManager.persist(obj); 
transaction.commit(); 

Я получил это исключение:

javax.persistence.PersistenceException: Нет поставщика Persistence для EntityManager с именем комментарий

Тогда я понял, что необходимо добавить файл persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> 
    <persistence-unit name="QuestionsComments" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>Comment</class> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.show_sql" value="true"/> 
     <property name="hibernate.connection.username" value="root"/> 
     <property name="hibernate.connection.password" value="root"/> 
     <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sogdb"/> 
     <property name="hibernate.max_fetch_depth" value="3"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

На самом деле, приложение, которое я использую, не является Java на сервере приложение (у меня есть клиентское приложение). Это означает, что нет папки META-INF, в которой будет храниться файл persistence.xml.

Мои вопросы:

1- Где нужно поместить файл persistence.xml?

2- Подходит ли код ниже? Зная, что моя таблица в базе данных QuestionsComments и мой класс, который будет связан с ним с использованием Hibernate, это Комментарий.

ответ

1

Если вы используете Eclipse, добавление фасета JPA к вашему проекту позволяет Eclipse позаботиться о том, чтобы настроить эти вещи для вас. Он создаст папку META-INF и сможет создать в ней файл stub persistence.xml. Вам не нужно запускать код на сервере, чтобы иметь папку META-INF в вашем файле jar.

Когда вы создаете EntityManagerFactory, аргумент строки должен быть именем единицы сохранения. Я бы рекомендовал использовать аннотации в классе сущности для указания имени таблицы, столбца идентификатора и т. Д.

Редактировать: фиксированная ссылка.

0
  1. В этом разделе ясно сказано, что в этом разделе Hibernate JPA Quick Start Guide. Он идет в META-INF.

  2. Проверьте тот же самый только что связанный проводник.

Лично я предпочитаю Hibernate-специфическую конфигурацию hibernate.cfg.xml с аннотациями для отображений и в Hibernate SessionFactory для доступа к операции; Мне легче оборачивать голову, хотя это, вероятно, потому, что я изначально узнал, как использовать Hibernate, не зная, как использовать JPA.

Смежные вопросы