- 浏览: 415106 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
skying007:
...
Mysql coalesce() 函数认识和用法 -
kchiu:
关于这个心跳的发送和接收 晚上全是the fuccking s ...
socket心跳检测 -
bjsq618:
你的想法在大的物流公司已经实现了,只不过他们使用是GPS定位
ddd -
jiaguwen123:
2,AuthenticationHandler类的写法
pa ...
xfire客户端 -
sornor:
总结的不错哟!
Java中的函数yield(),sleep()和wait()的区别
package com.cstp.hibernate;
import java.util.List;
import java.util.logging.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
public class QueryUser {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Logger log = Logger.getAnonymousLogger();
Configuration cfg = new Configuration().configure();//from xml
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
log.info("==========1=============");
//=================1========================
SQLQuery sq = session.createSQLQuery("select * from test");
List<Object[]> list1 = sq.list();
//list1 的结构([username,password],[username,password],[username,password],...)
for(Object[] obj:list1){
for(Object o:obj){
log.info(o.toString());
}
log.info("************");
}
log.info("==========2=============");
//=================2========================
Criteria ct=session.createCriteria(com.cstp.hibernate.User.class);
ct.add(Restrictions.eq("username", "chenlong"));
List<User> list2 = ct.list();
for(User user:list2){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("===========3============");
//=================3========================
DetachedCriteria dc=DetachedCriteria.forClass(com.cstp.hibernate.User.class);
dc.add(Restrictions.eq("password", "123"));
List<User> list3 = dc.getExecutableCriteria(session).list();
for(User user:list3){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("============4===========");
//=================4========================
//Query query = session.createQuery("from User test");
Query query = session.createQuery("from User");//2种写法都可以
List<User> list4 = query.list();
for(User user:list4){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("============5===========");
//=================5 取得一个已被填充了属性的对象,符合条件的有多条,取第一条========================
User user = (User) session.load(User.class, new String("402890ac232ba99801232ba999a70001"));
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
}
运行结果:
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ==========1=============
Hibernate: select * from test
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232ba99801232ba999a70001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: chenlong
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:18.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:18.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232ba9e001232ba9e1fb0001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: hww
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:36.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:36.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232baa3c01232baa3e250001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: liwei
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 333333
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:01:00.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:01:00.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232c9eec01232c9eee280001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: zhu
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123456
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 16:28:16.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 16:28:16.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ==========2=============
Hibernate: select this_.id as id0_0_, this_.username as username0_0_, this_.password as password0_0_, this_.createTime as createTime0_0_, this_.expireTime as expireTime0_0_ from test this_ where this_.username=?
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ===========3============
Hibernate: select this_.id as id0_0_, this_.username as username0_0_, this_.password as password0_0_, this_.createTime as createTime0_0_, this_.expireTime as expireTime0_0_ from test this_ where this_.password=?
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:hww password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ============4===========
Hibernate: select user0_.id as id0_, user0_.username as username0_, user0_.password as password0_, user0_.createTime as createTime0_, user0_.expireTime as expireTime0_ from test user0_
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:hww password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:liwei password:333333
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:zhu password:123456
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ============5===========
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
1方式:尽管sql语句写法灵活,但是结果显然不好。
2方式,3方式:只能加where限制条件,不能固定自己想查哪些字段,就是select * from 。。。(但是也没影响,不用的字段值放那不用也行)。
4方式:用的HQL语言:sql语句也灵活。
HQL 语法与SQL一致,区别在于:
1 如果查询一个对象的结果集,可以省略select部分,只用from
2 from 的内容可以是Mapping配置中的类名也可以是Mapping配置中的表名
3 使用group by 的时候,select不可以省略
4 分组查询结果不会映射成对象
5方式:要取得数据库的一条记录作为对象也很不错。
import java.util.List;
import java.util.logging.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
public class QueryUser {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Logger log = Logger.getAnonymousLogger();
Configuration cfg = new Configuration().configure();//from xml
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
log.info("==========1=============");
//=================1========================
SQLQuery sq = session.createSQLQuery("select * from test");
List<Object[]> list1 = sq.list();
//list1 的结构([username,password],[username,password],[username,password],...)
for(Object[] obj:list1){
for(Object o:obj){
log.info(o.toString());
}
log.info("************");
}
log.info("==========2=============");
//=================2========================
Criteria ct=session.createCriteria(com.cstp.hibernate.User.class);
ct.add(Restrictions.eq("username", "chenlong"));
List<User> list2 = ct.list();
for(User user:list2){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("===========3============");
//=================3========================
DetachedCriteria dc=DetachedCriteria.forClass(com.cstp.hibernate.User.class);
dc.add(Restrictions.eq("password", "123"));
List<User> list3 = dc.getExecutableCriteria(session).list();
for(User user:list3){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("============4===========");
//=================4========================
//Query query = session.createQuery("from User test");
Query query = session.createQuery("from User");//2种写法都可以
List<User> list4 = query.list();
for(User user:list4){
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
log.info("============5===========");
//=================5 取得一个已被填充了属性的对象,符合条件的有多条,取第一条========================
User user = (User) session.load(User.class, new String("402890ac232ba99801232ba999a70001"));
log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}
}
运行结果:
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ==========1=============
Hibernate: select * from test
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232ba99801232ba999a70001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: chenlong
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:18.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:18.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232ba9e001232ba9e1fb0001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: hww
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:36.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:36.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232baa3c01232baa3e250001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: liwei
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 333333
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:01:00.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:01:00.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232c9eec01232c9eee280001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: zhu
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123456
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 16:28:16.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 16:28:16.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ==========2=============
Hibernate: select this_.id as id0_0_, this_.username as username0_0_, this_.password as password0_0_, this_.createTime as createTime0_0_, this_.expireTime as expireTime0_0_ from test this_ where this_.username=?
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ===========3============
Hibernate: select this_.id as id0_0_, this_.username as username0_0_, this_.password as password0_0_, this_.createTime as createTime0_0_, this_.expireTime as expireTime0_0_ from test this_ where this_.password=?
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:hww password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ============4===========
Hibernate: select user0_.id as id0_, user0_.username as username0_, user0_.password as password0_, user0_.createTime as createTime0_, user0_.expireTime as expireTime0_ from test user0_
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:hww password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:liwei password:333333
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:zhu password:123456
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ============5===========
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
1方式:尽管sql语句写法灵活,但是结果显然不好。
2方式,3方式:只能加where限制条件,不能固定自己想查哪些字段,就是select * from 。。。(但是也没影响,不用的字段值放那不用也行)。
4方式:用的HQL语言:sql语句也灵活。
HQL 语法与SQL一致,区别在于:
1 如果查询一个对象的结果集,可以省略select部分,只用from
2 from 的内容可以是Mapping配置中的类名也可以是Mapping配置中的表名
3 使用group by 的时候,select不可以省略
4 分组查询结果不会映射成对象
5方式:要取得数据库的一条记录作为对象也很不错。
发表评论
-
入门 05 - Query接口
2012-09-05 08:13 1678入门 05 - Query接口 我 ... -
Java Hibernate Criteria 用法
2010-11-07 23:43 508715.1. 创建一个Criteria 实例org.hibern ... -
hibernate技巧 封装查询结果
2010-11-07 23:30 1256hibernate技巧 封装查询结果 将hibernate 查 ... -
hibernate调用数据库自定义函数
2010-10-31 17:31 1733本文使用的是Oracle9i数据库,hibernate3.0, ... -
HibernateTemplate 的 find方法使用
2010-10-27 22:04 2323一、find(String queryString); ... -
hibernate分组查询
2010-10-26 21:54 1648private static final Str ... -
Hibernate Criteria
2010-10-10 21:58 996Hibernate QBC查询 QBC查询: ... -
论述Hibernate中抓取策略
2010-10-10 21:27 1340Hibernate抓取策略(fetch ... -
Hibernate3的DetachedCriteria支持
2010-10-10 08:42 918Hibernate3支持DetachedCriteria,这是 ... -
hibernate 中对象操作中evict方法和clear方法的区别
2010-09-14 10:11 1271session.evict(obj),会把指定的缓冲对象进行清 ... -
Hibernate三种状态的区分
2010-09-14 10:02 968Hibernate的对象有3种状态,分别为:瞬时态(Trans ... -
hibernate查询多对多数据范例
2010-09-03 16:38 1075public class StuDao<T> ex ... -
hibernate生成数据库表
2010-08-19 08:22 4145import org.hibernate.cfg.Config ... -
hibernate二级缓存
2010-08-19 07:56 1119二级缓存也称进程级的缓存或SessionFactory级的缓存 ... -
hibernate一级缓存
2010-08-18 23:11 1272一级缓存很短和session的生命周期一致,一级缓存也叫ses ... -
hibernate向MYSQL插入数据的乱码问题
2010-08-17 21:55 1287向数据库插入数据的时候出现乱码,解决办法: 一、数据库连接串 ... -
composite-id 学习
2010-08-15 17:10 1301组件作为联合标识符,必须满足: 它必须实现java.io.Se ... -
hibernate存储过程调用
2010-08-12 17:28 1609听说Hibenate3可以在执行 ... -
Hibernate对视图的操作
2010-08-12 17:08 1267Hibernate对视图进行操作时和对普通的表有些不同,下面就 ... -
findMsgFluxByCp备忘
2010-08-12 14:21 905public List<MsgFlux> fin ...
相关推荐
Hibernate Criteria API提供了一种类型安全的方式来构建查询,避免了SQL注入的风险。以下是一个简单的例子: ```java Session session = sessionFactory.openSession(); Transaction tx = session.begin...
这个“Hibernate学习代码示例”压缩包文件为初学者提供了丰富的学习资源,帮助他们理解并掌握Hibernate的核心概念和实际应用。 首先,让我们详细探讨一下Hibernate的基础知识。Hibernate是一个开源的ORM框架,它的...
【hibernate-代码学习示例】是一个关于Hibernate框架的实战教程,主要针对开发者提供深入理解和使用Hibernate的实例。Hibernate是Java开发中的一个流行对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以更...
- **命名参数:** 推荐使用命名参数的方式传递值,如上述示例中的`"name"`,这种方式使得代码更具可读性。 - **易于维护:** 由于HQL的面向对象特性,使得它更容易理解和维护。 - **局限性:** HQL只适用于Hibernate...
8. **Criteria API**:另一种查询方式,提供了动态构建查询的能力,无需编写HQL,通过Criteria、DetachedCriteria等对象构建查询条件。 9. ** Criteria与HQL对比**:Criteria API适用于动态查询,而HQL适合静态查询...
本文将详细阐述通过三种查询方式跟踪Hibernate源码的方法,帮助开发者更好地掌握其工作原理。 首先,我们来看第一种查询方式:HQL(Hibernate Query Language)查询。HQL是Hibernate专有的SQL方言,允许开发者以...
本篇文章将详细解析Hibernate中的三种主要查询方式——HQL(Hibernate Query Language)、Criteria API和Query API,并着重讨论`load()`与`get()`方法的区别。 一、HQL查询 Hibernate Query Language(HQL)是...
Hibernate 是一个开源的ORM框架,它将Java类与数据库表关联,通过对象的方式来处理数据库的CRUD(创建、读取、更新、删除)操作。它消除了Java应用程序与数据库之间的直接交互,降低了开发难度,提高了代码的可读性...
在"Hibernate的使用例子代码"中,我们可以看到一个基础的示例,它将引导我们了解如何配置和使用Hibernate。下面将详细解释这个过程: 1. **配置Hibernate**: 使用Hibernate 首先需要在项目中引入Hibernate的依赖库...
Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用面向对象的方式来操作数据库。在Hibernate3.x版本中,它提供了更为完善的对象模型支持、更丰富的查询...
最后,`hibernate查询`这个压缩包可能包含了一些示例代码和配置文件,用于演示如何在Java项目中实现上述查询方式。通过分析这些文件,你可以更好地理解Hibernate查询的工作原理,并将其应用到自己的项目中。 总之,...
在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...
通过分析和学习这个源代码示例,开发者可以深入理解这两者之间的协同工作方式,从而提升自己的开发技能。这个例子不仅可以帮助初学者快速上手,也为有经验的开发者提供了一个参考模板,便于他们在项目中快速搭建类似...
在Java的持久化框架Hibernate中,一对一(OneToOne)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的关联关系。本示例将深入讲解如何在Hibernate中实现主键一对一关联映射,并通过代码示例进行解析...
在【描述】中提到,这个实战项目提供了实际的代码示例,这些示例已经过测试,确保可以正确运行。这意味着开发者可以下载并运行这些代码,以深入理解Hibernate的工作原理及其在实际开发中的应用。 【标签】...
`HibernateDemo1.zip`可能包含了一些使用Hibernate进行数据库操作的示例代码,如CRUD(创建、读取、更新、删除)操作,事务管理,以及HQL(Hibernate查询语言)的使用。 **Ehcache** 是一个高性能的、内存级别的...
"hibernate完整小示例"是一个基础的教程,涵盖了配置、实体类、持久化操作和查询等关键点。通过这个示例,开发者能够快速上手Hibernate,了解如何在Java项目中利用其强大功能进行数据库操作。不过,要完全掌握...
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">...
在Hibernate5中,它提供了两种主要的实体管理方式:传统的XML配置和更现代的注解方式。本压缩包文件“hibernate5官方文档样例代码”涵盖了这两种方法,帮助开发者深入理解Hibernate的工作原理。 **配置方案** 在...
示例查询是一种简单的查询方式,使用Hibernate的Session对象直接执行SQL语句。示例代码: ```java static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); String sql="select * ...