034:coreAPI_Delect,load,get,delete,update,saveOrupdate,clear,flush

@Test
	public void testDelete() {

		Teacher t = new Teacher();
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		System.out.println(t.getId());
		session.getTransaction().commit();

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.delete(t);
		session2.getTransaction().commit();
	}

	@Test
	public void testDelete2() {

		Teacher t = new Teacher();
		t.setId(2);

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.delete(t);
		session2.getTransaction().commit();
	}
	

load:从数据库里取一个记录,取到内存里,把这条记录转换成对应的对象

Teacher t = (Teacher) session.load(Teacher.class, 1);

意为:
从数据库里拿到了ID为1的那条记录了,它会自动转换成一个对象t,同时会把这个对象转换成Persistent的状态【即缓存里有数据库里也有】
get与load的区别:

1、不存在对应记录的表现不一样

2、load返回的是代理对象,等到真正用到以象的内容时才发出sql语句。

3、get直接从数据库加载,不会延迟。

	@Test
	public void testLoad() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.load(Teacher.class, 1);

		session.getTransaction().commit();
		System.out.println(t.getClass());
		// System.out.println(t.getName());
	}
	
	@Test
	public void testGet() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.get(Teacher.class, 1);

		session.getTransaction().commit();
		System.out.println(t.getClass());
		// System.out.println(t.getName());
	}


 

package com.bjsxt.hibernate;

import java.util.Date;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class HibernateCoreAPITest {
	private static SessionFactory sessionFactory;

	@BeforeClass
	public static void beforeClass() {
		sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}

	@AfterClass
	public static void afterClass() {
		sessionFactory.close();
	}

	@Test
	public void testTeacherSave() {

		Teacher t = new Teacher();

		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());

		// Session session = sessionFactory.openSession();
		Session session = sessionFactory.getCurrentSession();

		session.beginTransaction();
		session.save(t);

		Session session2 = sessionFactory.getCurrentSession();

		System.out.println(session == session2);

		session.getTransaction().commit();

		Session session3 = sessionFactory.getCurrentSession();

		System.out.println(session == session3);

	}

	@Test
	public void testSaveWith3State() {

		Teacher t = new Teacher();

		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		System.out.println(t.getId());
		session.getTransaction().commit();

		System.out.println(t.getId());
	}

	@Test
	public void testDelete() {

		Teacher t = new Teacher();
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		System.out.println(t.getId());
		session.getTransaction().commit();

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.delete(t);
		session2.getTransaction().commit();
	}

	@Test
	public void testDelete2() {

		Teacher t = new Teacher();
		t.setId(2);

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.delete(t);
		session2.getTransaction().commit();
	}
	
	@Test
	public void testLoad() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.load(Teacher.class, 1);

		session.getTransaction().commit();
		System.out.println(t.getClass());
		// System.out.println(t.getName());
	}
	
	@Test
	public void testGet() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.get(Teacher.class, 1);

		session.getTransaction().commit();
		System.out.println(t.getClass());
		// System.out.println(t.getName());
	}
	
	@Test
	public void testUpdate1() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.get(Teacher.class, 1);

		session.getTransaction().commit();

		t.setName("zhanglaoshi");

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(t);

		session2.getTransaction().commit();
	}
	
	@Test
	public void testUpdate2() {

		Teacher t = new Teacher();
		t.setName("zhanglaoshi");

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(t);

		session2.getTransaction().commit();
	}

	@Test
	public void testUpdate3() {

		Teacher t = new Teacher();
		t.setId(1);
		t.setName("zhanglaoshi");

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(t);

		session2.getTransaction().commit();
	}

	@Test
	public void testUpdate4() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.get(Teacher.class, 1);
		t.setName("zhangsan2");
		session.getTransaction().commit();
	}

	@Test
	public void testUpdate5() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Student s = (Student) session.get(Student.class, 1);
		s.setName("zhangsan5");
		session.getTransaction().commit();

		s.setName("z4");

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(s);
		session2.getTransaction().commit();
	}

	@Test
	public void testUpdate6() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Student s = (Student) session.get(Student.class, 1);
		s.setName("zhangsan6");
		session.getTransaction().commit();

		s.setName("z4");

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.merge(s);
		session2.getTransaction().commit();
	}

	@Test
	public void testUpdate7() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Query q = session
				.createQuery("update Student s set s.name='z5' where s.id = 1");
		q.executeUpdate();
		session.getTransaction().commit();

	}
	
	@Test
	public void testSaveOrUpdate() {

		Teacher t = new Teacher();
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.saveOrUpdate(t);

		session.getTransaction().commit();

		t.setName("t2");

		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.saveOrUpdate(t);
		session2.getTransaction().commit();

	}
	
	@Test
	public void testClear() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.load(Teacher.class, 1);
		System.out.println(t.getName());

		session.clear();

		Teacher t2 = (Teacher) session.load(Teacher.class, 1);
		System.out.println(t2.getName());
		session.getTransaction().commit();

	}

	@Test
	public void testFlush() {

		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher) session.load(Teacher.class, 1);
		t.setName("tttt");

		session.clear();

		t.setName("ttttt");

		session.getTransaction().commit();

	}
	
	<pre class="java" name="code">/*
	@Test
	public void testSchemaExport() {
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
	}*/


public static void main(String[] args) {beforeClass();}}
 


如果不在hibernate.cfg.xml中不加:

  <!-- Drop and re-create the database schema on startup -->
        <!-- 要不要hibernate 自动生成建表语句 -->
         <property name="hbm2ddl.auto">create</property>

则要加上上面的:

/*
	@Test
	public void testSchemaExport() {
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
	}*/


让它自动建表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值