034:coreAPI_Delect,load,get,delete,update,saveOrupdate,clear,flush
2014-07-31 10:14
435 查看
@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); }*/
让它自动建表。
相关文章推荐
- hibernate--session的CRUD方法, delete, load,get,update,saveorupdate, clear, flush
- Hibernate深入理解----03Session缓存核心方法(save()和persist(),get()和load(),update()和saveOrUpdate,delete()和evil()
- hibernate-核心开发接口(delete、get、load 、saveOrUpdate 、SchemaExport)-7
- [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作
- hibernate-核心API-saveOrUpdate-claar-flush
- hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- cs_Content_CreateUpdateDelete///cs_Content_GetList///cs_Content_Load
- Hibernate的OID,对象状态,save(),saveOrUpdate(),get()和load()
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- load,get;find,iterator;merge,saveOrUpdate,lock的区别
- LOAD,GET;FIND,ITERATOR;MERGE,SAVEORUPDATE,LOCK的区别