问题描述
- Hibernate4 获取sessionFactory出错
-
利用
ServiceRegistry serviceRegistry =
new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
空指针异常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> <session-factory> <!-- 配置连接数据库的基本信息 --> <property name="connection.username">zy</property> <property name="connection.password">123456</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property> <!-- 配置 hibernate 的基本信息 --> <!-- hibernate 所使用的数据库方言 --> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <!-- 执行操作时是否在控制台打印 SQL --> <property name="show_sql">true</property> <!-- 是否对 SQL 进行格式化 --> <property name="format_sql">true</property> <!-- 指定自动生成数据表的策略 --> <property name="hbm2ddl.auto">update</property> <!-- 指定关联的 .hbm.xml 文件 --> <mapping resource="com/zy/hibernate/News.hbm.xml"/> </session-factory> </hibernate-configuration>
News.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zy.hibernate"> <class name="News" table="NEWS2"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <!-- 指定主键的生成方式, native: 使用数据库本地方式 --> <generator class="sequence"> <param name="sequence">news2_seq</param> </generator> </id> <property name="title" type="java.lang.String"> <column name="TITLE" /> </property> <property name="author" type="java.lang.String"> <column name="AUTHOR" /> </property> <property name="date" type="java.util.Date"> <column name="DATE" /> </property> </class> </hibernate-mapping>
解决方案
Hibernate4废弃了AnnotationConfigration类,这就要求使用新的获取方式。
下面用Hibernate3与新的方案做对比,给自己留个便于查询的记录。
Hibernate3,未使用Spring依赖注入的案例:
public class HibernateUtil{
private static SessionFactory sessionFactory;
s......
答案就在这里:Hibernate4中获取SessionFactory
解决方案二:
ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
factory = config.buildSessionFactory(sr);
解决方案三:
你会不会是配置文件没配置好?
解决方案四:
绝对是配置文件的问题,你想看空指针,都没找到这哥们在哪里,看你的配置文件,都对么,还是没放对地方
解决方案五:
配置文件的问题,没贴出来
解决方案六:
你的方言类型选择的是any version 可以
1 jdbc包引进来了么??
必须的核心包:
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.10.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
ojdbc6.jar
2 http://bbs.csdn.net/topics/390406859
3 http://ask.csdn.net/questions/181613
4 http://www.oschina.net/question/927134_151544?sort=time&p=1#answers
最后,这个问题我查了有一阵功夫了,不管解决没,记得采纳啊