1,save
2,update
3,delete
4,get/load(查询单个纪录)
实例代码:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.util.Date; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.junit.After; import org.junit.Before; import org.junit.Test; //测试类 public class StudentsTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { //创建配置对象 Configuration config=new Configuration().configure(); config.addClass(Students.class);//这个需要加上(视频里面没有) //创建服务注册对象。 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder() .applySettings(config.getProperties()).build(); //通过config.getProperties()读取配置文档。 //创建会话工厂对象 sessionFactory=config.buildSessionFactory(serviceRegistry); //创建会话对象 session=sessionFactory.openSession(); //开启事务 transaction=session.beginTransaction(); } @After public void destory() { transaction.commit();//提交事务 session.close();//关闭会话 sessionFactory.close();//关闭会话工厂 } @Test public void testSaveStudents() { Students s=new Students(); s.setSname("张三丰"); s.setGender("男"); Address address=new Address("710069","0289923282","西安市"); s.setAddress(address); s.setBirthday(new Date()); session.save(s);//保存对象进入数据库 } @Test //get查询方法 public void testGetStudents() { Students s=session.get(Students.class, 1); System.out.println(s); } @Test //load查询方法 public void testLoadStudents() { Students s=session.load(Students.class, 1); System.out.println(s); } @Test //更新方法 public void testUpdateStudents() { Students s=session.get(Students.class, 1); s.setGender("女"); session.update(s); } @Test //删除方法 public void testDeleteStudents() { Students s=session.load(Students.class, 1); session.delete(s); } }
测试结果:
get
load
update
delete
get与load区别
1,get在调用之后离开发送sql语句,不考虑缓存,返回持久化对象。
2,load方法在调用后返回一个代理对象。
该代理对象只保存了实体对象的ID,直到使用对象的非主键属性时才会发出sql语句,比如打印输出时候,会调用发出SQL。
3,如果查询数据库不存在的数据,get方法返回null,load方法抛出异常。