保存记录
session.save(customer);
根据主键进行查询
Customer customer = (Customer)session.get(Customer.class ,1); Customer customer = (Customer)session.load(Customer.class,1);
***** get 和load的区别:(面试题)
1.发送SQL的时机:
load这个方法采用了一个技术.lazy延迟加载(懒加载).真正使用这个对象的数据的时候.(对象的数据不包括主键)
get这个方法是立即检索.当执行session.get()方法的时候,马上发送SQL语句查询.
2.返回的对象:
load方法返回的是代理对象.
get方法返回的是真实的对象.
3.查询一个不存在的数据:
load方法抛异常:ObjectNotFoundException.
get方法返回null,在调用方法时抛出异常:NullPointException.
修改记录
//修改有两种方式 //1手动创建对象的方式 Customer customer = new Customer(); customer.setId(2); customer.setName("苍老师"); session.update(customer); //这种方式如果有没有设置的属性,将这个属性的默认值存入了(不好)
//2先查询再修改的方式(推荐方式) Customer customer = (Customer) session.get(Customer.class, 1); customer.setName("凤姐"); session.update(customer);
删除记录
//删除记录有两种方式: //1手动创建对象的方式 Customer customer = new Customer(); customer.setId(2); session.delete(customer);
//2先查询再删除的方式 Customer customer = (Customer)session.get(Customer.class, 1); session.delete(customer);
查询所有
HQL:Hibernate Query Language
//面向对象的写法 Query query = session.createQuery("from Customer where name = ?"); query.setParameter(0, "苍老师"); Query.list();
QBC:Query By Criteria(条件查询)
Criteria criteria = session.createCriteria(Customer.class); criteria.add(Restrictions.eq("name", "凤姐")); List<Customer> list = criteria.list();
SQL
//第一种方式 SQLQuery query = session.createSQLQuery("select * from customer"); List<Object[]> list = query.list(); //第二种方式 SQLQuery query = session.createSQLQuery("select * from customer"); query.addEntity(Customer.class); List<Customer> list = query.list();