1.Session中的常用更新数据或者获取数据方法:
save:新增数据
get:获取一条数据
load:获取一条数据
update:更新数据
delete:删除数据
注:get方法和load方法区别:get是先从一级缓存中获取数据,再从耳机缓冲中获取数据,而load方法是直接从二级缓存中获取数据。Session是一级缓存。
2.简单的HQL:
HQL:hibernate query language,面向对象的查询语言。
HQL语法:可以依如下格式:
[select 实体类属性列表] from 类名 [where 条件] [group by 条件] [having 条件] [order by 条件]
使用Query进行HQL查询:
(1)获取Session对象
(2)编写HQL语句//创建Configuration对象 Configuration cfg = new Configuration(); //加载注册文件 cfg.configure("/hibernate.cfg.xml"); //创建SessionFactory StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); builder.applySettings(cfg.getProperties()); SessionFactory factory = cfg.buildSessionFactory(builder.build()); //打开session Session session = factory.openSession();
(3)使用session的createQuery(HQL语句)方法创建Query对象,如果HQL语句包含参数,那么接着使用Query对象的setXX()方法为参数赋值。
(4)调用Query的list方法返回查询结果。
例如:
Query q = session.createQuery("from Users where id=:myid"); q.setInteger("myid", 1); List<Users> list = q.list(); for (Users users : list) { System.out.println(users.getUsername()); }
使用Criteria进行HQL查询(步骤与Query进行HQL查询类似):
例如:
Criteria c = session.createCriteria(Users.class); c.add(Restrictions.eq("id", 2)); List<Users> list = c.list(); for (Users users : list) { System.out.println(users.getUsername()); }