Java 无法运行基本的hibernate 5程序
我正在尝试运行hibernate教程()中给出的程序。但我遇到了错误。令人惊讶的是,控制台中显示的错误日志很少。如果有人能告诉我哪里出了问题,我将不胜感激。我已经花了很多时间试图解决它之前,张贴在这里。 下面是我的代码 hibernate.cfg.xmlJava 无法运行基本的hibernate 5程序,java,hibernate,Java,Hibernate,我正在尝试运行hibernate教程()中给出的程序。但我遇到了错误。令人惊讶的是,控制台中显示的错误日志很少。如果有人能告诉我哪里出了问题,我将不胜感激。我已经花了很多时间试图解决它之前,张贴在这里。 下面是我的代码 hibernate.cfg.xml <hibernate-configuration> <session-factory> <!-- Database connection settings --> &l
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe;DB_CLOSE_DELAY=-1;MVCC=TRUE</property>
<property name="connection.username">hr</property>
<property name="connection.password">hr</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<mapping resource="org/hibernate/tutorial/hbm/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:xe;DB_CLOSE_DELAY=-1;MVCC=真
人力资源
人力资源
1.
org.hibernate.dialen.oracle10galent
org.hibernate.cache.internal.NoCacheProvider
真的
创造
Event.hbm.xml
<hibernate-mapping package="org.hibernate.tutorial.hbm">
<class name="Event" table="EVENTS">
<id name="id" column="EVENT_ID">
<generator class="increment"/>
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>
</class>
</hibernate-mapping>
测试类别:NativeApillustrationTest
package org.hibernate.tutorial.hbm;
import java.util.Date;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import junit.framework.TestCase;
public class NativeApiIllustrationTest extends TestCase {
private SessionFactory sessionFactory;
@Override
protected void setUp() throws Exception {
// A SessionFactory is set up once for an application!
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() // configures settings from hibernate.cfg.xml
.build();
try {
sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
}
catch (Exception e) {
// The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory
// so destroy it manually.
StandardServiceRegistryBuilder.destroy( registry );
}
}
@Override
protected void tearDown() throws Exception {
if ( sessionFactory != null ) {
sessionFactory.close();
}
}
@SuppressWarnings("unchecked")
public void testBasicUsage() {
// create a couple of events...
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save( new Event( "Our very first event!", new Date() ) );
session.save( new Event( "A follow up event", new Date() ) );
session.getTransaction().commit();
session.close();
// now lets pull events from the database and list them
session = sessionFactory.openSession();
session.beginTransaction();
List result = session.createQuery( "from Event" ).list();
for ( Event event : (List<Event>) result ) {
System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
}
session.getTransaction().commit();
session.close();
}
}
package org.hibernate.tutorial.hbm;
导入java.util.Date;
导入java.util.List;
导入org.hibernate.Session;
导入org.hibernate.SessionFactory;
导入org.hibernate.boot.MetadataSources;
导入org.hibernate.boot.registry.StandardServiceRegistry;
导入org.hibernate.boot.registry.StandardServiceRegistryBuilder;
导入junit.framework.TestCase;
公共类NativeApillustrationTest扩展了TestCase{
私人会话工厂会话工厂;
@凌驾
受保护的void setUp()引发异常{
//为应用程序设置一次SessionFactory!
最终StandardServiceRegistry注册表=新的StandardServiceRegistryBuilder()
.configure()//从hibernate.cfg.xml配置设置
.build();
试一试{
sessionFactory=新的元数据源(注册表).buildMetadata().buildSessionFactory();
}
捕获(例外e){
//注册表将被SessionFactory销毁,但我们在构建SessionFactory时遇到了问题
//所以手动销毁它。
StandardServiceRegistryBuilder.destroy(注册表);
}
}
@凌驾
受保护的void tearDown()引发异常{
if(sessionFactory!=null){
sessionFactory.close();
}
}
@抑制警告(“未选中”)
public void testBasicUsage(){
//创建几个事件。。。
Session Session=sessionFactory.openSession();
session.beginTransaction();
save(新事件(“我们的第一个事件!”,new Date());
保存(新事件(“后续事件”,新日期());
session.getTransaction().commit();
session.close();
//现在让我们从数据库中提取事件并列出它们
session=sessionFactory.openSession();
session.beginTransaction();
列表结果=session.createQuery(“来自事件”).List();
对于(事件:(列表)结果){
System.out.println(“事件(“+Event.getDate()+”):+Event.getTitle());
}
session.getTransaction().commit();
session.close();
}
}
登录控制台:
Jun 13, 2017 6:54:51 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.10.Final}
Jun 13, 2017 6:54:51 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Jun 13, 2017 6:54:51 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [oracle.jdbc.driver.OracleDriver] at URL [jdbc:oracle:thin:@localhost:1521:xe;DB_CLOSE_DELAY=-1;MVCC=TRUE]
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=fod, password=****}
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
Jun 13, 2017 6:54:52 AM org.hibernate.service.internal.AbstractServiceRegistryImpl stopService
INFO: HHH000369: Error stopping service [class org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl] : java.lang.NullPointerException
2017年6月13日上午6:54:51 org.hibernate.Version日志版本
信息:hh000412:Hibernate核心{5.2.10.Final}
2017年6月13日上午6:54:51 org.hibernate.cfg.Environment
信息:HH000206:找不到hibernate.properties
2017年6月13日上午6:54:51 org.hibernate.annotations.common.reflection.java.JavaReflectionManager
信息:HCANN000001:Hibernate Commons注释{5.0.1.Final}
2017年6月13日上午6:54:52 org.hibernate.engine.jdbc.connections.internal.driverManager连接提供MPL配置
警告:HHH10001002:使用Hibernate内置连接池(不用于生产!)
2017年6月13日上午6:54:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
信息:HHH10001005:在URL[jdbc:oracle:thin:@localhost:1521:xe;DB\u CLOSE\u DELAY=-1;MVCC=TRUE]处使用驱动程序[oracle.jdbc.driver.OracleDriver]
2017年6月13日上午6:54:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
信息:HHH10001001:连接属性:{user=fod,password=**}
2017年6月13日上午6:54:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
信息:HHH10001003:自动提交模式:错误
2017年6月13日上午6:54:52 org.hibernate.engine.jdbc.connections.internal.PooledConnections
信息:HH000115:休眠连接池大小:1(最小值=1)
2017年6月13日上午6:54:52 org.hibernate.service.internal.AbstractServiceRegistryImpl stopService
信息:HH000369:停止服务时出错[class org.hibernate.engine.jdbc.connections.internal.driverManager连接ProviderImpl]:java.lang.NullPointerException
空指针出现在第行:Session Session=sessionFactory.openSession();它表示sessionFactory为null
下面是我在类路径中添加的jar
I我对hibernate.cfg.xml进行了一些更改,它开始工作。修改后的xml如下所示:
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="connection.username">hr</property>
<property name="connection.password">hr</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<mapping resource="org/hibernate/tutorial/hbm/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:XE
人力资源
人力资源
1.
org.hibernate.dialen.oracle10galent
org.hibernate.cache.internal.NoCacheProvider
真的
创造
我在此xml中所做的更改是修改连接url:
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
jdbc:oracle:thin:@localhost:1521:XE
问题的答案可能会有所帮助;但是我建议您学习新的方法,因为这种配置应用程序的方法已经过时了