Hibernate几种获取数据方式的比较
1个回答
展开全部
通过Hibernate获取数据可以使用:
1。Session的get()和load()方法,这两方法至少需要传递一个类模板和要查询的对象的id,因为Hibernate中区分对象时通过对象的主键(id)来区分的。他们都只能返回一个结果,不同的是,get()方法在没有查询到数据时会返回一个NULL,而load()方法会抛出ObjectNotFoundException的异常,且load()方法支持延迟加载。
2。Query对象的iterator()和list()方法,可以返回一个结果集。list()方法不支持延迟加载,而iterator()方法支持延迟加载,即先得到结果集的所有id,然后在访问对象属性的时候才会真正的去执行SQL语句根据id查询出对应的信息。
3。使用Hibernate提供的HQL语言来查询数据。HQL语言是Hibernate官方推荐使用的语言,它可以提供丰富的,面向对象的持久化数据操作。如:查询Customer中name="张三"的人员的信息,使用HQL语句Stringhql = "from CustomerPO where CustomerPO.name=:cName";Query query =session.createQuery(hql);
HQL语言是面向对象的,所以from后面不是数据表的名称,而是PO(持久化对象)对象的类名,where条件也不是数据表字段,而是PO的属性,其中:cName是一个展位符,如同在JDBC中使用的‘?’一样的效果。要执行HQL语句需要Query来执行,通过Session得到Query对象,设置占位符的值query.setParmater("cName","张三");接下来调用Query的list()方法得到结果集Listlist = query.list();在HQL语句中同样可以使用order by、Groupby、having、desc、asc等SQL语言的关键字,只是需要注意,这里只用的是对象及其属性,而不是数据表和数据字段,查询条件出来在HQL语句中只用SQL关键字外,还可以使用Restrictions来设置条件criteria.add(Restrictions.eq("name","张三"))。还可以使用Criteria来执行HQL语句,使用方法和Query基本相同。
Restrictions条件查询设置有:eq()等于、not()不等于、gt()大于、lt()小于 、le()小于等于、isNull()等于空、in()等于范围内的某值、between()在两值之间、like()字符串匹配、and()逻辑与、or()逻辑或、not()逻辑非。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询