hibernate session.get(class,serialid) 方法为空值的原因?

package hibernate.test;

import hibernate.test.pojo.Person;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class Test {
    public static void main(String[] args) {
		// TODO Auto-generated method stub
    Configuration config=new Configuration().configure();
    ServiceRegistry sr=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();

    SessionFactory sFactory=config.buildSessionFactory(sr);
    Session session=sFactory.openSession();
    Transaction tx=session.beginTransaction();
    Person person=(Person)session.get(Person.class, 12);//老是说空值,也就是没有获得对象,为什么呢???
    person.setName("oscasfsfsfr");
    person.setPassword("sfasf1ddd");
   //Person person=new Person();//临时对象
    session.merge(person);
    tx.commit();
    session.close();
	}

}

Exception in thread "main" java.lang.NullPointerException

at hibernate.test.Test.main(Test.java:23)

person.java

package hibernate.test.pojo;

public class Person {
private Integer id;
private String name;
private String password;
public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
}
时间: 2024-11-03 22:21:25

hibernate session.get(class,serialid) 方法为空值的原因?的相关文章

第二节 hibernate session基本方法介绍

Hibernate session 对象是和数据库建立连接的对象,session中包含了许多操作数据库的方法,下面一一描述. 1 保存对象到数据库 session.save(); 按照第一节的配置,主键的生成策略为native(数据库自动生成主键),由于数据库使用的是mysql 5,所以是自增的主键生成方式.保存对象时并不需要设置id属性. @Test public void testSave() { try { User user = new User(); user.setBirthday(

Hibernate中Session的几个方法的简单说明

Hibernate对普通JDBC的操作进行了轻量级的封装,使得开发人员可以利用Session对象以面向对象的思想来实现对关系数据库的操作. 一般通过Configuration对象读取相应的配置文件来创建SessionFactory,然后通过SessionFactory对象获取Session对象,获取Session对象之后,我们就可以相关数据的操作了. 下面来介绍一下Session对象的几种方法: 1.Session.save() Session.save(Object obj):把瞬时状态对象o

hibernate的Session的saveOrUpdate等方法的使用

本文主要说的是Session的saveOrUpdate.clear.flush等方法的使用以及控制建表语句的输出等. 1.Session的saveOrUpdate方法 先看下hibernate的API文档的相关描述:  void saveOrUpdate(Object object) Either save() or update() the given instance, depending upon the value of its identifier property. 即根据Id判断是

hibernate session问题大总结

openSessionInView的作用! OpenSessionInViewFilter是Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,直到这个请求结束,具体是通过一个Filter来实现的.由于Hibernate引入了Lazy Load特性,使得脱离Hibernate的Session周期的对象如果再想通过getter方法取到其关联对象的值,Hibernate会抛出一个LazyLoad

Hibernage错误:Could not open Hibernate Session for transaction

今天在做SSH框架整合的时候碰到的这个问题,在测试service层的时候程序正常运行,但是添加Struts,在action层测试的时候提示了如下问题:Could not open Hibernate Session for transaction.大概意思就是数据库连接超时. 解决方法如下: 在spring的配置文件中添加如下配置 给sessionFactory的bean添加如下配置 <bean id="sessionFactory" class="org.spring

hibernate session.save()和session.persist()的区别

save()需要返回一个Serialzable的实现类,因此执行这个方法时会马上插入到数据库 而persist()不会立即插入到数据库. "当我们封装一个长会话流程的时候,persist()方法就显得尤为重要了!" 记录下来,防止自己再一次忘记 hibernate session.save()和session.persist()的区别,码迷,mamicode.com

Hibernate批量处理海量数据的方法

本文实例讲述了Hibernate批量处理海量数据的方法.分享给大家供大家参考,具体如下: Hibernate批量处理海量其实从性能上考虑,它是很不可取的,浪费了很大的内存.从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作.实际使用下来性能非常不理想,在笔者的实际使用中采用下面的第三种优化方案的数据是:100000条数据插入数据库, 需要约30分钟,呵呵,晕倒.(本人10分钟插入1000000条数据(字段比较小)) 总结下来有三种来处理以解决性能问题:

[原理][来源解析]spring于@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关联

Spring 捆绑Hibernate. 夹: 一.  1. Spring 怎样处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3.  propagation=Propagation.SUPPORTS和propagation=Propagation.require对生成Session有何影响,共同点和差别 ? 3.1. 未配置@Transaction和 配置@Transaction(propagation=P

Hibernate Session中的save(),update(),delete(),saveOrUpdate() 细粒度分析

Hibernate在对资料库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础,它不是设计为执行绪安全(Thread-safe),一个Session由一个执行绪来使用. 开启Session Session实例由SessionFactory开启获得,例如: Configuration config = new Configuration().configure(); SessionFact