Почему Scala ищет файл persistence.xml вместо hibernate.cfg.xml? - PullRequest
0 голосов
/ 05 декабря 2018

Я не эксперт в спящем режиме, но я пытаюсь выучить это с помощью Scala.До сих пор я мог только найти документацию по hibernate с Java, но без scala.

Моя путаница связана с тем, когда я должен использовать persistence.xml, и когда hibernate.cfg.xml.

У меня естьэто сомнение, потому что я вижу примеры с обоими, и мой код иногда жалуется на то, что не находит persistence.xml, и когда он находит его, то снова жалуется на то, что не находит свойства гибернации ... поэтому я чувствую себя сбитым с толку.Я чувствую что-то вроде трения между Scala / Java или другими стандартами ...

Любое предложение?

Это мое основное приложение:

package nl.busa.jpa


import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

object HibernateJpaScalaTutorial {
    var entityManagerFactory: EntityManagerFactory = Persistence.createEntityManagerFactory("nl.busa.jpa.HibernateJpaScalaTutorial")
    var entityManager: EntityManager = entityManagerFactory.createEntityManager()

def main(args: Array[String]) {

    entityManager.getTransaction().begin()
    entityManager.persist(new Buddy("Natalino", "Busa"))
    entityManager.persist(new Buddy("Angelina", "Jolie"))
    entityManager.persist(new Buddy("Kate", "Moss"))
    entityManager.getTransaction().commit()

    entityManager.getTransaction().begin();
    val allBuddies = entityManager.createQuery("From Buddy", classOf[Buddy]).getResultList
    println(allBuddies);

    entityManager.close();
}
}

Это мой спящий режим.cfg.xml

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory name="hibernate.cfg.xml">
    <property name = "hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name = "hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name = "hibernate.connection.url">jdbc:mysql://localhost/test</property>
    <property name = "hibernate.connection.username">root</property>
    <property name = "hibernate.connection.password"></property>
    <property name="hibernate.hbm2ddl.auto">create"</property>
</session-factory>
</hibernate-configuration>

И мое сообщение об ошибке таково:

Не удалось найти файл META-INF / persistence.xml в пути к классам

1 Ответ

0 голосов
/ 05 декабря 2018

Вполне возможно, что этот вопрос является хотя бы частичным дубликатом

для чего нужны два файла конфигурации для Hibernate?

, но основной вопрос оченьшире: короче: persistence.xml для Hibernate в режиме JPA, hibernate.cfg.xml для нативного API Hibernate).На первый взгляд ваш код выглядит как JPA, поэтому вам нужен файл persistence.xml.Вероятно, лучше всего сначала изучить JPA, если у вас нет веских причин использовать собственный API Hibernate.Множество хороших ресурсов, охватывающих JPA в Интернете, например, официальный учебник Oracle или

JP Ларса Фогеля реализован во многих ORM (не только в Hibernate, но и, например, Eclipselink или OpenJPA - см. Что такое реализация JPA? для получения дополнительной информации. Изучение / использование Hibernate, на мой взгляд, необходимо, только если вы когда-либо собираетесьиспользуйте Hibernate в качестве своего решения ORM.

Если вы планируете использовать серверы приложений один день, они, как правило, поставляются со своей встроенной реализацией JPA, и гораздо проще использовать и управлять этими встроенными средствами, чем предоставлять другое.ОРМ.

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