- 浏览: 914624 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (498)
- J2EE (52)
- 数据库 (17)
- java基础 (43)
- web技术 (19)
- 程序设计 (6)
- 操作系统 (18)
- IT资讯 (7)
- 我的IT生活 (12)
- 学习笔记 (9)
- Jquery (25)
- JavaScript (18)
- spring (40)
- Hibernate (12)
- Struts (10)
- YUI (2)
- Extjs (22)
- .net (0)
- Eclipse (10)
- 社会主义 (2)
- 服务器 (9)
- CSS (8)
- 网络安全 (16)
- 版本控制 (9)
- PHP (2)
- Oracle (42)
- SQL server (1)
- Mysql (11)
- 项目管理 (3)
- 开发工具使用 (10)
- SQL语句 (7)
- Perl (0)
- Shell (6)
- 漏洞 (4)
- ibatis (5)
- hacker (2)
- SQL注入 (6)
- Hacker工具 (2)
- 入侵和渗透 (7)
- 插件/组件 (2)
- 最爱开源 (5)
- 常用软件 (2)
- DOS (1)
- HTML (2)
- Android (9)
- CMS (1)
- portal (8)
- Linux (7)
- OSGI (1)
- Mina (5)
- maven (2)
- hadoop (7)
- twitter storm (2)
- sap hana (0)
- OAuth (0)
- RESTful (1)
- Nginx (4)
- flex (1)
- Dubbo (1)
- redis (1)
- springMVC (1)
- node.js (1)
- solr (2)
- Flume (1)
- MongoDB (2)
- ElasticSearch (1)
最新评论
-
M_drm:
请问要怎么设置浏览器才不报没权限呢?
用JS在页面调用本地可执行文件的方法(ACTIVEX) -
Alexniver:
官方文档。When importing data into I ...
mysql导入数据过慢 解决方法 -
camelwoo:
我记得 Criteria 可以做连接查询与子查询,也可以做分页 ...
Hibernate总结篇二 -
zhenglongfei:
楼主如果SubKeyName 这个节点不存在,怎么办??怎么用 ...
Java操作注册表 -
yxx676229549:
用log4j 2 了
logback
什么是命名查询?
Hibernate允许在映射文件中定义字符串形式的查询语句,这种查询方式成为命名查询
使用命名查询有什么好处?
由于使用Hibernate的HQL常常需要在Java代码中写字符串查询语句,HQL混杂在代码之间,破坏代码可读性,通过使用命名查询,可以使业务逻辑和查询语句分离,使您专注于查询,而避免了 SQL 或者 HQL 代码分散于整个应用程序中的情况。
可以应用命名查询做复杂查询的处理
命名查询如何实现?
介绍下面几种方式:
方法一:在配置文件中<class/>标记的下面,声明查询语句
备注: <![CDATA[ ]]>是什么意思?
标明是纯文本的,没有这个的话 < > & 字符是不能直接存入XML的,需要转义,而用这个标记则不需要转义而将这些符号存入XML文档。可以避免未预料的特殊符号导致XML解析出错。
方法二:也可以在配置文件中<class/>标记的里面,声明查询语句, 但是java代码调用时需要指定(包+类+配置名)
方法三:使用原生sql查询<sql-query>,使用此种方式必须把表所有的列写全才可以,否则会出现‘列名无效’的错误 ,除非你使用return-scalar来设置字段类型。
备注: 也可以在<return/>标记里面应用<return-property/>标记将表的所有字段列出来,与上面描述的方法一样,都是查询出来所有列。
方法四:使用原生sql查询<sql-query>, 如果应用return-scalar来设置字段类型, 就可以实现查询部分字段。
Hibernate允许在映射文件中定义字符串形式的查询语句,这种查询方式成为命名查询
使用命名查询有什么好处?
由于使用Hibernate的HQL常常需要在Java代码中写字符串查询语句,HQL混杂在代码之间,破坏代码可读性,通过使用命名查询,可以使业务逻辑和查询语句分离,使您专注于查询,而避免了 SQL 或者 HQL 代码分散于整个应用程序中的情况。
可以应用命名查询做复杂查询的处理
命名查询如何实现?
介绍下面几种方式:
方法一:在配置文件中<class/>标记的下面,声明查询语句
<hibernate-mapping> <class name="com.test.bean.Student" table="student" catalog="users"> <id name="id" type="integer"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="string"> <column name="name" length="11" /> </property> <property name="age" type="integer"> <column name="age" /> </property> <property name="sex" type="string"> <column name="sex" length="2" /> </property> </class> <!-- 定义查询语句 --> <query name="findStudentByName"> <![CDATA[from Student where name = :name]]> </query> </hibernate-mapping>
备注: <![CDATA[ ]]>是什么意思?
标明是纯文本的,没有这个的话 < > & 字符是不能直接存入XML的,需要转义,而用这个标记则不需要转义而将这些符号存入XML文档。可以避免未预料的特殊符号导致XML解析出错。
public List<Student> query(){ Session session = HibernateSessionFactory.getSession(); Query q = session.getNamedQuery("findStudentByName"); q.setString("name", "zhangsan"); List<Student> list = q.list(); return list; }
方法二:也可以在配置文件中<class/>标记的里面,声明查询语句, 但是java代码调用时需要指定(包+类+配置名)
<hibernate-mapping> <class name="com.test.bean.Student" table="student" catalog="users"> <id name="id" type="integer"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="string"> <column name="name" length="11" /> </property> <property name="age" type="integer"> <column name="age" /> </property> <property name="sex" type="string"> <column name="sex" length="2" /> </property> <!-- 定义查询语句 --> <query name="findStudentByName"> <![CDATA[from Student where name = :name]]> </query> </class> </hibernate-mapping>
public List<Student> query(){ Session session = HibernateSessionFactory.getSession(); Query q = session.getNamedQuery("com.test.bean.Student.findStudentByName"); q.setString("name", "zhangsan"); List<Student> list = q.list(); return list; }
方法三:使用原生sql查询<sql-query>,使用此种方式必须把表所有的列写全才可以,否则会出现‘列名无效’的错误 ,除非你使用return-scalar来设置字段类型。
<hibernate-mapping> <class name="com.test.bean.Student" table="student" catalog="users"> <id name="id" type="integer"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="string"> <column name="name" length="11" /> </property> <property name="age" type="integer"> <column name="age" /> </property> <property name="sex" type="string"> <column name="sex" length="2" /> </property> </class> <!-- 定义查询语句 --> <sql-query name="findStudentByName"> <return alias="s" class="com.test.bean.Student"> </return> <![CDATA[select {s.*} from student s where s.name = :name]]> </sql-query> </hibernate-mapping>
备注: 也可以在<return/>标记里面应用<return-property/>标记将表的所有字段列出来,与上面描述的方法一样,都是查询出来所有列。
public List<Student> query(){ Session session = HibernateSessionFactory.getSession(); Query q = session.getNamedQuery("findStudentByName"); q.setString("name", "zhangsan"); List<Student> list = q.list(); return list; }
方法四:使用原生sql查询<sql-query>, 如果应用return-scalar来设置字段类型, 就可以实现查询部分字段。
<hibernate-mapping> <class name="com.test.bean.Student" table="student" catalog="users"> <id name="id" type="integer"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="string"> <column name="name" length="11" /> </property> <property name="age" type="integer"> <column name="age" /> </property> <property name="sex" type="string"> <column name="sex" length="2" /> </property> </class> <!-- 定义查询语句 --> <sql-query name="findStudentByName"> <return-scalar column="name" type="string"/> <return-scalar column="age" type="integer"/> <![CDATA[select s.name , s.age from student s where s.name = :name]]> </sql-query> </hibernate-mapping>
public List<Object[]> query(){ Session session = HibernateSessionFactory.getSession(); Query query = session.getNamedQuery("findStudentByName"); query.setString("name", "zhangsan"); List<Object[]> list = query.list(); return list; } 或者: public List<Student> query(){ Session session = HibernateSessionFactory.getSession(); Query q = session.getNamedQuery("findStudentByName"). setResultTransformer(Transformers.aliasToBean(Student.class)); q.setString("name", "zhangsan"); List<Student> list = q.list(); return list; }
发表评论
-
为什么用IBATIS不用Hibernate及不用JDBC而用IBATIS
2013-11-23 14:28 0为什么用IBATIS不用Hiberna ... -
Hibernate 面试中最常考察的知识点整合(转)
2013-03-29 16:26 834http://jianfulove.iteye.com/blo ... -
关于Hibernate中占位符式的查询
2013-03-28 17:38 1787占位符式的查询 ( 就是采用 ? 替换查询语句中的变量 ) 是 ... -
Hibernate参考文档
2013-03-28 13:29 894Hibernate参考文档 http://www.redsag ... -
Hibernate总结篇二
2013-01-27 15:43 1690Hibernate总结篇二 一、HQ ... -
spring 监听器 IntrospectorCleanupListener简介
2012-08-02 17:00 1067"在服务器运行过程中,Spring不停的运行的计划任 ... -
hql写的一个取最大值的语句
2011-11-15 00:31 1095hql写的一个取最大值的语句 http://www.itey ... -
Hibernate 参数设置一览表
2011-09-07 13:35 821属性名 用途 hibernate.di ... -
数据持久化Hibernate的标准数据库连接池配置(转)
2011-07-20 11:22 1534转自:http://hi.baidu.com/lanruiji ... -
关于Hibernate获取JDBC连接 直接执行SQL
2011-07-20 11:03 1230今天要做一个显示数据库列表的功能,不想直接用JDBC,呵呵 于 ... -
解决Hibernate原生SQL映射问题
2010-06-01 16:48 2384在问答里和论坛中,经常看到有人问,怎样将使用本地SQL查询出来 ... -
Hibernate工作原机制
2010-05-13 08:54 1207原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建S ...
相关推荐
### Hibernate中的查询方式详解 #### 一、HQL查询(Hibernate Query Language) HQL是Hibernate提供的面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的一个显著优势在于它具有很好的跨数据库能力,这...
命名查询是在Hibernate配置文件(如Query.hbm.xml)中预定义的HQL或Criteria查询,具有良好的可读性和可维护性。例如,在Query.hbm.xml中定义一个命名查询: ```xml <hibernate-mapping> <!-- ... --> from ...
本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询DetachedCriteria、例子查询、SQL查询以及命名查询,以满足不同场景下的需求。 1. HQL查询: Hibernate Query Language(HQL)是一种...
Hibernate作为Java领域中最流行的ORM(Object-Relational Mapping)框架之一,提供了一系列高效、灵活的查询机制,旨在桥接对象模型与关系数据库之间的鸿沟。本文将深入探讨Hibernate的查询方式,特别聚焦于HQL...
本文将深入探讨如何使用Hibernate进行数据表中的部分字段查询,这在实际开发中是非常常见的需求。 首先,理解Hibernate的核心概念:实体(Entity)、持久化类(Persistent Class)和映射文件(Mapping File)。实体...
在`hibernate.cfg.xml`或实体类的`@NamedQuery`注解中定义命名查询: ```xml FROM Student WHERE age > 20 ``` 在代码中使用: ```java Query query = session.getNamedQuery("getStudentsOverAge"); ...
在Java的持久化框架Hibernate中,HQL(Hibernate Query Language)是用于操作对象关系映射(ORM)的SQL方言,提供了更加面向对象的查询方式。本篇将详细讲解HQL中的命名参数以及如何通过Query接口实现分页查询,这...
以上就是关于“Hibernate在查询操作中使用分页+命名参数+排序技术”的详细介绍。在实际开发中,熟练掌握这些技巧能帮助我们写出高效、安全且易于维护的代码。希望这篇文章对你有所帮助,更多关于Hibernate的源码分析...
虽然描述部分为空,但根据给定的博文链接,我们可以推测文章可能详细解释了Hibernate中的级联查询概念,可能包括实际应用示例和源码解析。博主可能通过具体的例子展示了如何配置和使用级联查询,以及可能遇到的问题...
- `findByNamedQuery(queryName, params)`: 使用预定义的命名查询,这些查询可以在`hbm.xml`映射文件中定义,或通过`@NamedQuery`注解在实体类上声明。 - `countByExample(entity)`: 计算满足特定条件的记录数,...
### Hibernate查询解决方案详解 #### 一、概述 Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它提供了从 ...在实际项目开发中,合理运用 Hibernate 查询功能,可以有效提高数据访问效率和程序的可维护性。
1. **命名参数**: 在HQL查询中推荐使用命名参数而非位置参数,因为命名参数更易于理解和维护。 2. **性能优化**: 对于大型数据集,应考虑使用`setFirstResult`和`setMaxResults`进行分页查询以提高效率。 3. **错误...
在Java持久化框架Hibernate中,命名查询是一种强大的功能,它允许开发者在映射文件中预定义HQL(Hibernate Query Language)或SQL查询,从而提高代码的可读性和可维护性。这种方式将查询语句与业务逻辑分离,使得...
JNDI和锁:JNDI(Java Naming and Directory Interface)用于在Java应用程序中访问命名和目录服务。锁部分则介绍了乐观锁和悲观锁的概念及其使用方法。 Fetching(抓取):抓取是指Hibernate如何从数据库中获取数据...
- `@NamedQuery`: 预定义命名查询,可以在多个地方重用。 7. **缓存** - `@Cacheable`: 标记实体类或方法支持缓存,提高性能。 - `@Cache`: 配置缓存区域和策略,如读写策略、时间戳等。 8. **转换器与自定义...
在Hibernate中,每个Java类都可以映射为数据库中的一个表,通过注解或者XML文件进行配置。注解如@Entity、@Table、@Id等用于声明实体类和字段的数据库属性。XML文件通常命名为 "*.hbm.xml",包含类到表的映射信息。 ...
16.2. 命名SQL查询 16.2.1. 使用return-property来明确地指定字段/别名 16.2.2. 使用存储过程来查询 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器...
1. **实体映射(Entity Mapping)**: Hibernate 3使用XML文件(通常命名为.hbm.xml)或注解来定义Java类与数据库表之间的映射关系。通过这种方式,Java对象可以直接保存到数据库,无需编写SQL语句。 2. **配置文件...
Hibernate 使用 XML 文件(通常命名为 `*.hbm.xml`)或注解方式来定义对象与数据库表之间的映射关系,这个过程称为 ORM 映射。映射文件包含了实体类的属性与数据库字段的对应、主键生成策略、关联关系等信息。 四、...
命名查询是一种使用Hibernate的命名查询机制的方式。示例代码: ```java static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); Query query=s.getNamedQuery("Admin.getByName...