问题描述
线程mainjava.lang中的异常。 NullPointerException
Sep 04,2014 7:06:50 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO:Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4577357d:startup date [Thu Sep 04 19:06:50 IST 2014];上下文层次结构的根
2014年9月4日7:06:50 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO:从类路径资源加载XML bean定义[app-context.xml ]
2014年9月4日7:06:51 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO:预先实例化org.springframework.beans.factory.support.DefaultListableBeanFactory中的单例30583b71:定义bean [dataSource,mysessionFactory,hibernateTemplate,employeeDAO];工厂层次根目录
.19:06:52.016 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1
.19:06:52.023 [main] INFO org.hibernate。 cfg.Environment - 找不到hibernate.properties
.19:06:52.027 [main] INFO org.hibernate.cfg.Environment - 字节码提供程序名称:javassist
.19:06:52.032 [main] INFO org.hibernate.cfg.Environment - 使用JDK 1.4 java.sql.Timestamp处理
.19:06:52.246 [main] INFO org.hibernate.cfg.HbmBinder - 映射类:com.bean.Employee - > EMP1
2014年9月4日7:06:52 org.springframework.orm.hibernate3.LocalSessionFactoryBean buildSessionFactory
INFO:构建新的Hibernate SessionFactory
.19:06:52.320 [main] INFO ohc ConnectionProviderFactory - 初始化连接提供者:org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
.19:06:54.660 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS:Oracle,版本:Oracle数据库10g快速版版本10.2 .0.1.0 - 生产
.19:06:54.660 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC驱动程序:Oracle JDBC驱动程序,版本:10.2.0.1.0XE
.19:06 :54.681 [main] INFO org.hibernate.dialect.Dialect - 使用方言:org.hibernate.dialect.Oracle9Dialect
.19:06:54.683 [main] WARN org.hibernate.dialect.Oracle9Dialect - Oracle9Dialect方言有已被弃用;使用Oracle9iDialect或Oracle10gDialect代替
.19:06:54.686 [main] INFO ohtTransactionFactoryFactory - 事务策略:org.springframework.orm.hibernate3.SpringTransactionFactory
.19:06:54.688 [main] INFO oht TransactionManagerLookupFactory - 没有配置TransactionManagerLookup(在JTA环境中,不推荐使用读写或事务性二级缓存)
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - beforeCompletion():已禁用
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - 事务结束时自动会话关闭:已禁用
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC批处理大小:15
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - 版本化数据的JDBC批更新:disabled
.19: 06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - 可滚动结果集:启用
.19:06:54.689 [main] INFO org .hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys():disabled
.19:06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - 连接发布模式:auto
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 默认批量获取大小:1
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 生成包含注释的SQL:disabled
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 按主键排序SQL更新:disabled
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching:disabled
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 查询翻译器:org.hibernate.hql.ast.ASTQueryTranslatorFactory
.19:06:54.692 [ main] INFO ohhast.ASTQueryTranslatorFactory - 使用ASTQueryTranslatorFactory
.19:06:54.692 [main] INFO org.hibernate.cfg.SettingsFactory - 查询语言替换:{}
.19:06:54.693 [main ] INFO org.hibernate.cfg.SettingsFactory - JPA-QL严格合规性:已禁用
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - 二级缓存:已启用
.19:06:54.693 [main] INFO org .hibernate.cfg.SettingsFactory - 查询缓存:已禁用
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - 缓存区工厂:org.hibernate.cache.impl.NoCachingRegionFactory
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - 优化缓存的最小存储空间:disabled
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-级别高速缓存条目:已禁用
.19:06:54.699 [main] INFO org.hibernate.cfg.SettingsFactory - 将所有SQL回送到stdout
.19:06:54.700 [main] INFO org.hibernate。 cfg.SettingsFactory - Statistics:disabled
.19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - 删除的实体合成标识符rollback:disabled
.19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - 默认实体模式:pojo
.19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - 命名查询检查:启用
.19:06:54.771 [main] INFO o.hibernate.impl.SessionFactoryImpl - 建立会话工厂
.19:06:55.035 [main] INFO ohimpl.SessionFactoryObjectFactory - 不绑定工厂到JNDI,没有配置JNDI名称
1
rajeev
线程mainjava中的异常。 lang.NullPointerException
at com.bean.EmployeeDAO.saveEmployee(EmployeeDAO.java:15)
at com.bean.Test.main(Test.java:13)
我无法找到这个错误,任何人都可以帮助我。下面是我的代码
我已经创建了这样的数据库表
$ bCREATE TABLE EMP1
(
ID NUMBER(10,0)NOT NULL PRIMARY KEY,
NAME VARCHAR2(10)
);
app-context.xml
<?xml version =1.0encoding =UTF-8?>
< beans xmlns =http://www.springframework.org/schema/beans
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\">
< bean class =org.apache.tomcat.dbcp.dbcp.BasicDataSourceid =dataSource>
< property name =driverClassNamevalue =oracle.jdbc.driver.OracleDriver>< / property>
< property name =urlvalue =jdbc:oracle:thin:@localhost:1521:xe>< / property>
< property name =passwordvalue =test>< / property>
< / bean>
< bean class =org.springframework.orm.hibernate3.LocalSessionFactoryBean
id =mysessionFactory>
< property name =dataSourceref =dataSource>< / property>
< property name =mappingResources>
< list>
<值> Employee.hbm.xml< /值>
< / list>
< / property>
< property name =hibernateProperties>
<道具>
< prop key =hibernate.dialect> org.hibernate.dialect.Oracle9Dialect< / prop>
< prop key =hibernate.show_sql> true< / prop>
< /道具>
< / property>
< / bean>
< bean class =org.springframework.orm.hibernate3.HibernateTemplate
id =hibernateTemplate>
< property name =sessionFactoryref =mysessionFactory>< / property>
< / bean>
< bean class =com.bean.EmployeeDAOid =employeeDAO>
< property name =hibernateTemplateref =hibernateTemplate>< / property>
< / bean>
< / beans>
EmployeeDAO.java
package com.bean;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class EmployeeDAO {
HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
this.hibernateTemplate = hibernateTemplate;
}
public void saveEmployee(Employee employee){
System.out.println(employee.getId());
System.out.println(employee.getName());
hibernateTemplate.save(employee);
}
public void updateEmployee(Employee employee){
hibernateTemplate.update(employee);
$ / code $ / pre
$ b $ Employee.java
package com.bean;
public class Employee {
private int id;
私人字符串名称;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
Employee.hbm.xml p>
<?xml version =1.0?>
<!DOCTYPE hibernate-mapping PUBLIC - // Hibernate / Hibernate映射DTD 3.0 // EN
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> ;
< hibernate-mapping>
< class name =com.bean.Employeetable =EMP1>
< id name =idtype =int>
< column name =ID/>
< generator class =assigned/>
< / id>
< property name =nametype =java.lang.String>
< column name =NAME/>
< / property>
< / class>
< / hibernate-mapping>
Test.java
package com.bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String [] args){
ApplicationContext context = new ClassPathXmlApplicationContext(app-context.xml);
Employee employee = new Employee();
employee.setName(rajeev);
employee.setId(1);
EmployeeDAO employeeDAO = new EmployeeDAO();
employeeDAO.saveEmployee(employee);
$ p这是github链接
git @ github .com:mcarajeev / spring-with-hibernate1.git解决方案如果您创建
EmployeeDAO employeeDAO = new EmployeeDAO();
以这种方式HibernateTemplate属性为null。
尝试更改
$ b $ $ b
EmployeeDAO employeeDAO =(EmployeeDAO)context.getBean(employeeDAO);
I am learning spring with hibernate integration.I am getting this exception
Exception in thread "main" java.lang.NullPointerException Sep 04, 2014 7:06:50 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4577357d: startup date [Thu Sep 04 19:06:50 IST 2014]; root of context hierarchy Sep 04, 2014 7:06:50 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [app-context.xml] Sep 04, 2014 7:06:51 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@30583b71: defining beans [dataSource,mysessionFactory,hibernateTemplate,employeeDAO]; root of factory hierarchy .19:06:52.016 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 .19:06:52.023 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found .19:06:52.027 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist .19:06:52.032 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling .19:06:52.246 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: com.bean.Employee -> EMP1 Sep 04, 2014 7:06:52 PM org.springframework.orm.hibernate3.LocalSessionFactoryBean buildSessionFactory INFO: Building new Hibernate SessionFactory .19:06:52.320 [main] INFO o.h.c.ConnectionProviderFactory - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider .19:06:54.660 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: Oracle, version: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production .19:06:54.660 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: Oracle JDBC driver, version: 10.2.0.1.0XE .19:06:54.681 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.Oracle9Dialect .19:06:54.683 [main] WARN org.hibernate.dialect.Oracle9Dialect - The Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or Oracle10gDialect instead .19:06:54.686 [main] INFO o.h.t.TransactionFactoryFactory - Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory .19:06:54.688 [main] INFO o.h.t.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) .19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled .19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled .19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15 .19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled .19:06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled .19:06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled .19:06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto .19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1 .19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled .19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled .19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled .19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory .19:06:54.692 [main] INFO o.h.h.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory .19:06:54.692 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {} .19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled .19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled .19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled .19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory .19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled .19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled .19:06:54.699 [main] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout .19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled .19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled .19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo .19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled .19:06:54.771 [main] INFO o.hibernate.impl.SessionFactoryImpl - building session factory .19:06:55.035 [main] INFO o.h.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured 1 rajeev Exception in thread "main" java.lang.NullPointerException at com.bean.EmployeeDAO.saveEmployee(EmployeeDAO.java:15) at com.bean.Test.main(Test.java:13)
I am unable to find the mistake,can anyone help me.Below is my code
I have created database table like this
CREATE TABLE EMP1 ( ID NUMBER(10,0) NOT NULL PRIMARY KEY, NAME VARCHAR2(10) );
app-context.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" id="dataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property> <property name="username" value="test"></property> <property name="password" value="test"></property> </bean> <bean class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" id="mysessionFactory"> <property name="dataSource" ref="dataSource"></property> <property name="mappingResources"> <list> <value>Employee.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <bean class="org.springframework.orm.hibernate3.HibernateTemplate" id="hibernateTemplate"> <property name="sessionFactory" ref="mysessionFactory"></property> </bean> <bean class="com.bean.EmployeeDAO" id="employeeDAO"> <property name="hibernateTemplate" ref="hibernateTemplate"></property> </bean> </beans>
EmployeeDAO.java
package com.bean; import org.springframework.orm.hibernate3.HibernateTemplate; public class EmployeeDAO { HibernateTemplate hibernateTemplate; public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } public void saveEmployee(Employee employee){ System.out.println(employee.getId()); System.out.println(employee.getName()); hibernateTemplate.save(employee); } public void updateEmployee(Employee employee){ hibernateTemplate.update(employee); } }
Employee.java
package com.bean; public class Employee { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Employee.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"> <!-- Generated Sep 3, 2014 9:01:05 PM by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping> <class name="com.bean.Employee" table="EMP1"> <id name="id" type="int"> <column name="ID" /> <generator class="assigned" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> </class> </hibernate-mapping>
Test.java
package com.bean; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("app-context.xml"); Employee employee=new Employee(); employee.setName("rajeev"); employee.setId(1); EmployeeDAO employeeDAO=new EmployeeDAO(); employeeDAO.saveEmployee(employee); } }
this is github linkgit@github.com:mcarajeev/spring-with-hibernate1.git
解决方案If you create
EmployeeDAO employeeDAO=new EmployeeDAO();
in this way the attribute HibernateTemplate is null.try to change
EmployeeDAO employeeDAO=new EmployeeDAO();
in
EmployeeDAO employeeDAO= (EmployeeDAO) context.getBean("employeeDAO");
这篇关于Spring with Hibernate - 线程中的异常“main”显示java.lang.NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!