hibernate多个小知识点聚合

hibernate多个小知识点集合
事务比较GetCurrentSession和OpenSession方法

GetCurrentSession方法,获取当前的session,如果有,就用,如果没有,就new一个新的.

OpenSession永远new一个新的.

GetCurrentSession事务提交后不需要手动close().
OpenSession事务提交后需要手动close().


hibernate 的load方法获取数据
package com.eiyoudao;

import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.meiyoudao.domain.PersonAnno;

/**
 * @author User
 *
 */
public class PersonAnnoUnit {
	
	private static Session session = null;
	
	@BeforeClass
	public static void getSession(){
		Session sess = new AnnotationConfiguration().configure().buildSessionFactory()
		.getCurrentSession();
		
		session = sess;
	}
	
	@AfterClass
	public static void commit(){
		
		session.getTransaction().commit();
	}
	
	@Test
	public void loadUnit(){
		
		session.beginTransaction();
		PersonAnno personAnno = (PersonAnno)session.load(PersonAnno.class, 4);
		//使用load方法获取数据,必须到personAnno.getName()才会到数据库中获取数据.
		System.out.println(personAnno.getName());
	}


}



get对象方法
@Test
	public void getUnit(){
		
		session.beginTransaction();
		PersonAnno personAnno = (PersonAnno)session.get(PersonAnno.class, 4);
		//使用get方法获取数据,到此已经到数据库中获取数据.
		System.out.println(personAnno.getName());

	}


删除对象方法
@Test
    public void deleteUnit(){
        
        session.beginTransaction();
        PersonAnno personAnno = new PersonAnno();
        personAnno.setId(1);
        session.delete(personAnno);
    }


更新对象方法
@Test
	public void updateUnit(){
		
		session.beginTransaction();
		PersonAnno personAnno = new PersonAnno();
//更新方法,必须有ID为3的列.如果没有,就会报错
		personAnno.setId(3);
		personAnno.setName("daodao");
		session.update(personAnno);
	}


保存或更新对象方法
	@Test
	public void saveOrUpdateUnit(){
		
		session.beginTransaction();
		PersonAnno personAnno = new PersonAnno();
//ID为主键并且自增长,设置了ID就是update.如果没有ID列匹配的值,会报错.如果有会更新.
//没有设置ID列.会为save.新增列.
		//personAnno.setId(0);
		personAnno.setName("daodao1");
		
		session.saveOrUpdate(personAnno);
	}



session还有以下两个常用方法
session.flush();
session.clear();