Как настроить hibernate datasouce в Java SE - PullRequest
0 голосов
/ 15 февраля 2012

Я прочитал почти всю ветку о том, как настроить источник данных hibernate, но не могу найти помощь.Я имею в виду в hibernate.cfg.xml элемент <property name="hibernate.connection.datasource"> ? </property> я знаю, что я должен настроить с jndi.Я пытаюсь Google, но все статьи основаны на разработке с jbossas, ejb, tomcat, weblogic и их jndi.Но мне нужен JND из Java SE.Поправьте меня, пожалуйста, если я ошибаюсь.

Я новичок в Hibernate, поэтому я использую NetBeans, проект SE с банками Hibernate 3.2.5.(Я изучаю Hibernate из книги Beginning Hibernate, 2-е издание, адрес и исходный код взяты из книги ...)

Мой hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  <hibernate-configuration>
    <property name="hibernate.connection.driver_class">
      com.mysql.jdbc.Driver
    </property>
    <property name="hibernate.connection.url">
      jdbc:mysql://127.0.0.1:3306/asd
    </property>
    <property name="hibernate.connection.username">root</property>

    <!-- nastaveni dialektu -->
    <property name="hibernate.dialect">
      org.hibernate.dialect.MySQLInnoDBDialect
    </property>

    <!-- jndi nastaveni -->
    <property name="hibernate.connection.datasource">
      java:hibernate/SessionFactory
    </property>
    <property name="hibernate.connection.username">root</property>
    <property name="cache.provider_class">
      org.hibernate.cache.NoCacheProvider
    </property>
    <property name="hibernate.jndi.class">javax.naming.InitialContext</property>
  </session-factory>
</hibernate-configuration>

И у меня только один класс FirstHibernate:

package firsthibernate;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class FirstHibernate {

    private static SessionFactory session = null;
    private static Session s = null;

    public static void main(String[] args) {
        try {
            session = new AnnotationConfiguration().configure().buildSessionFactory();
            s = session.openSession();

            s.beginTransaction();
            // List l = s.createQuery("from query").list();
            s.getTransaction().commit();
        } catch (Exception ex) {
            if (s.getTransaction() != null) {
                //s.getTransaction().rollback();
            }
            System.out.println(ex.toString());
        } finally {
            s.close();
        }
    }
}

Я получаю это сообщение:

SEVERE: Could not obtain initial context javax.naming.NoInitialContextException: Cannot instantiate class: javax.naming.InitialContext [Root exception is java.lang.ClassCastException: javax.naming.InitialContext cannot be cast to javax.naming.spi.InitialContextFactory]

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Исходя из того, что я вижу, вы настраиваете спящий режим в неуправляемой среде.В неуправляемой среде Hibernate обрабатывает соединения через простые пулы соединений. Невозможно настроить источник данных в неуправляемом режиме.Вы можете взглянуть на http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/transactions.html#transactions-demarcation-nonmanaged для получения более подробной информации.

0 голосов
/ 15 февраля 2012

Вам не нужны такие сложные настройки для SE. Надеюсь, эта ссылка поможет

  1. Пример приложения Hibernate
  2. Проверка быстрого запуска Hibernate
...