本论文是一篇数据库类有关论文答辩,关于关于Hibernate查询方法的相关大学毕业论文范文。免费优秀的关于数据库及参考文献及对象方面论文范文资料,适合数据库论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
摘 要:本文探讨了Hibernate查询的五种方法:HQL查询,本地SQL查询,命名查询,对象化查,动态分离查询.
关 键 词:HQL查询;本地SQL查询;命名查询;对象化查询;动态分离查询
中图分类号:TP312.1文献标识码:A文章编号:1007-9599(2012)20-0000-02
Hibernate是一个开源的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,完成数据持久化的重任.本文举例探讨了Hibernate查询的五种方法:
1HQL查询(HibernateQueryLanguage)
1.1HQL是Hibernate查询语言,是一种面向对象的查询语言,操作的对象是类、实例、属性等,是一种select等from的语法结构,from后跟的是实体类名,而不是表名.
示例1:
Queryquery等于session.creatQuery("fromUser");
Listlist等于query.list();
查询返回的类型可以为:Object[]数组、List类型、Map类型、Java实体对象.
示例2:
Queryquery等于session.creatQuery("selectu.name,u.telephonefromUseruwherename等于:name");//使用命名参数查询
query.setString("name",name);
List
HQL提供一种面向对象的查询语言,其语法更接近传统的SQL语句的查询语法.使用HQL能够避免使用JDBC查询的一些弊端:首先,不需要再编写繁琐的SQL语句,将针对实体类及其属性进行查询,其次,查询结果是直接存放在List中的对象,不需要再次封装.而且HQL独立于数据库.
2本地SQL查询
HQL查询功能虽然强大,但是HQL不能涵盖所有的查询特性,有时不得不借助SQL达到期望的目标.HQL对本地SQL查询提供了内置的支持,称为本地SQL查询:
有关论文范文主题研究: | 数据库相关论文范文 | 大学生适用: | 高校毕业论文、学术论文 |
---|---|---|---|
相关参考文献下载数量: | 68 | 写作解决问题: | 写作参考 |
毕业论文开题报告: | 论文任务书、论文总结 | 职称论文适用: | 职称评定、职称评中级 |
所属大学生专业类别: | 写作参考 | 论文题目推荐度: | 经典题目 |
示例3:
Queryquery等于session.createSQLQuery("select*fromt_user").addEntity(User.class);
Listrs等于query.list();
"select*fromt_user"为SQL语句,from后为表名.此方法的缺点是破坏跨平台,不面向对象.
3命名查询
Hibernate中可以命名常用的查询,需要使用的是只需要引用名称就可以了,命名查询一般配置在实体类中.
3.1XML配置命名查询
示例4:
<![CDATA[fromUserwhereid=:id]]>
Queryquery等于session.getNamedQuery("getUserById");
该文出处:http://www.sxsky.net/benkelunwen/060246658.html
query.setInteger("id",id);
Listlist等于query.list();
这种方法以松耦合的方式来配置查询语句,从而可以更好地提高程序解耦.
3.2@配置命名查询
使用@注解配置实体类时,要使用@注解配置命名查询,用到的Java注解为@NamedQuery与@NamedNativeQuery.
示例5:
@NamedQuery(name等于"allUser",query等于"fromUser")//命名查询
@NamedNativeQuery(name等于"allUser",query等于"select*fromtab_user")//命名本地查询
@Entity
@Table(name等于"tab_user")
PublicclassUser{
}
Queryquery等于sesssion.getNamedQuery("allUser")
4对象化查询Criteria方法:
4.1Criteria查询采用面向对象的方式封装查询条件,对SQL语句进行封装,采用对象的方式来组合各种查询条件,由Hibernate自动产生SQL查询语句.
示例6:
Criteriacriteria等于Session.createCriteria(User.class);
criteria.add(Restrictions.eq("name",name));
criteria.add(Restrictions.eq("pwd",pwd));
List
使用Criteria查询需要首先创建criteria对象,传入的参数是对应的实体类的类型对象.4.2Example查询
在使用criteria查询时,设定查询条件并非一定要使用Restrictions,如果属性条件很多,使用Restrictions也不方便.如果已经有了一个对象,那就可以根据这个对象作为查询的