通过上面的总结知道 在一个hibernate中,是通过session来进行与数据库之间的通信的 因此我们要了解session的一些常用的方法
除了上文中提到过得session.save()方法
对象在session中总共有三种状态 瞬时态 持久态和游离态 session的save方法就是将瞬时态的变成持久态的 ,
session.delete()方法就相当于数据库中的delete方法 用于将持久态的变为游离态3
这张图可以很好的作为解释
同时session也具有update() save() delete() 方法
get方法用户通过标识符获得指定类的持久化对象
User user = (User) session.get(User.class, "123456");
若没有 则返回为空
load方法和get方法一样 通过标识符获得指定类的持久化对象 但是要求持久化类的对象必须存在 否则就会产生异常
User us = (User) session.load(User.class, "123456");
createQuery方法就是和HQL语句联合搭配起来使用的
首先我们可以根据名称类设置参数
Query query = session.createQuery("from user where age > :userAge");
//根据名称设置integer的参数
query.setInteger("userAge", 25);
第二种方法 也可以根据位置来设置参数
Query qu = session.createQuery("from user where age > ?");
//根据位置来设置 第一参数的位置为0
qu.setInteger(0, 25);
在这里建议使用名字来设置参数 这样可以提高代码的可读性
list()犯法用以返回java的list类型的数据
List user = (List) query.list();
query的uniqueResult()方法用于返回唯一的结果 确保记录只有一个记录满足查询条件下才可以进行
query.executeUpdate()
setFirstResult()方法获取记录的第一个方法 如果传入20 则表示提取第21个
setMaxResult()方法设置记录的最大记录数,在分页时有非常好的作用
HQL语句本省是不区分大小写的 但是在HQL语句中的类名和属性名是要区分大小写的
例如查询一个实体
String hql = "from user";
String hql1 = "from user as u";
//限制查询的条件 不等于是<>
String hql2 = "from user as u where sex = '男' and age > 18";
//只获取name属性
String hql3 = "select name from user";
//也可以一次索引多个属性
String hql4 = "select name,age from u where sex = '男'";
//执行跟新
//执行跟新
String hql8 = "update user set name = 'caokai'";
聚合函数的应用
//HQL中的聚合函数
String hql5 = "select count(*),max(age),min(age),avg(age) from User";
//distinct来去除重复的数据
String hql6 = "select distinct from user";
分组和排序
//分组和排序
String hql7 = "select avg(age) from user order by name";
个人认为和SQL语句还是蛮相似的
HQL语句较好的
http://www.cnblogs.com/focusChen/articles/2401892.html
http://blog.csdn.net/v123411739/article/details/28644007
session总结较好的
http://blog.csdn.net/shrek_xu/article/details/740991