Hibernate简单增删改查
2021-02-14 20:19
标签:void 存在 复杂 加载 一个 out containe 状态 直接 文章链接:https://www.cnblogs.com/HelloXHD/p/12892402.html load()和get()都是用来从数据库中加载所需数据来创建一个持久化对象。 Query负责各种数据库查询,可以使用Hibernate查询语言(HQL)或者SQL;HQL语言使用类和属性而非表与字段名进行查询; saveOrUpdate()方法包含了save()和update()的功能。 Hibernate简单增删改查 标签:void 存在 复杂 加载 一个 out containe 状态 直接 原文地址:https://www.cnblogs.com/HelloXHD/p/12989726.htmlHibernate中的基本增删改查
一.增:save(Object o)
public void add(){
Session session = Utils.getSession();
Transaction ts = session.beginTransaction();
Customer customer = new Customer();
customer.setCust_name("李好好");
session.save(customer);
ts.commit();
session.close();
}
二.查: get(Class class, id); load(Class class, id);
public void demo2(){
Session session = Utils.getSession();
Transaction ts = session.beginTransaction();
/**
* get()与load();
*/
//get();执行到get时立即发送sql语句查询
Customer customer = session.get(Customer.class, 7l);
System.out.println(customer);
//load();执行到load时不会马上发送sql语句请求(lazy请求)
Customer customer1 = session.load(Customer.class, 4l);//使用到查询对象时发送请求
System.out.println(customer1);
ts.commit();
session.close();
}
load()与get()的区别
首先从Session和persistent Context中查询是否存在缓存,若存在则直接返回,否则是否是lazy,如果是则直接检索数据库,,否则需要建立代理对象,在访问获得的代理对象时检索数据库。三.改:update(Object o)
public void demo3(){
Session session = Utils.getSession();
Transaction ts = session.beginTransaction();
//直接更改法(不合适)
/*Customer customer = new Customer();
customer.setCust_id(1l);
customer.setCust_name("刘少");
session.update(customer);*/
//先查询后修改(推荐)
Customer customer = session.get(Customer.class, 1l);
customer.setCust_level("123");
customer.setCust_phone("13327362883");
session.update(customer);
ts.commit();
session.close();
}
四.删:delete(Object o)
public void demo4(){
Session session = Utils.getSession();
Transaction ts = session.beginTransaction();
//直接删除法(不合适)
//先查询后删除
Customer customer = session.get(Customer.class, 6l);
session.delete(customer);
ts.commit();
session.close();
}
五.查:Query(HQL---Hibernate Query Language)、Criteria
或者使用Criteria,使用Session实例的createCriteria()方法创建Criteria对象(但此API在Hibernate5中不再推荐使用)public void demo6(){
Session session = Utils.getSession();
Transaction ts = session.beginTransaction();
//接收HQL:Hibernate Query Language 面向对象查询语言
Query query = session.createQuery("from Customer ");
List
六.保存或更新: saveOrUpdate(Object o);
Hibernate会根据对象状态进行选择save()或者update():若对象是持久化对象,则不进行任何操作,直接返回;若对象的标识符属性在数据库中不存在,则调用save();否则,调用update()将对象的值更新到数据库。
ps:如果能够确定对象是否在数据库里就尽量不用saveOrUpdate(),影响效率。public void demo5(){
Session session = Utils.getSession();
Transaction ts = session.beginTransaction();
Customer customer = new Customer();
customer.setCust_id(8l);
customer.setCust_name("李不好");
session.saveOrUpdate(customer);
ts.commit();
session.close();
}