hibernate检索方式

struts+hibernate图书借阅管理系统 struts+hibernate实现的图书借阅管理系统,非常适合初学者学习 立即下载

       Hibernate提供以下几种检索对象的方式。

l         导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)

l         OID检索方式。(按照对象的OID来检索对象。)

l         HQL检索方式。(使用面向对象的HQL查询语言。)

l         QBC检索方式。(使用QBC(Qurey By Criteria) API来检索对象。)

l         本地SQL检索方式。(使用本地数据库的SQL查询语句。)

 

一、Hibernate的检索方式简介

1、HQL检索方式

HQL(Hibernate Query Language)是面向对象的查询语言,它和SQL查询语言有些相识。在Hibernate提供的各种检索方式中,HQL是使用最广的一种检索方式。它具有以下功能:

l         在查询语句中设定各种查询条件。

l         支持投影查询,即仅检索出对象的部分属性。

l         支持分页查询。

l         支持分组查询,允许使用having和group by关键字。

l         提供内置聚集函数,如sum()、min()和mac()。

l         能够调用用户定义的SQL函数。

l         支持子查询,即嵌入式查询。

l         支持动态绑定参数。

Session类的find方法及Qurey接口都支持HQL检索方式。区别在于,前者只是执行一些简单HQL查询语句的便捷方法,它不具有动态绑定参数的功能,而且在将来新的Hibernate版本中,有可能淘汰find方法;而Qurey接口才是真正的HQL查询接口,它提供了以上列出的各种查询功能。

       注:Qurey接口支持方法链编程风格,它的set方法都返回自身实例,而不是返回void类型。方法链编程风格能使程序代码更加简洁。

示例代码:

Java代码 复制代码
  1. Query query = session.createQuery("from Customer as c where " +"c.name=:customerName and c.age=:customerAge");    // 动态绑定参数    query.setString("customerName", "Test");    query.setInteger("customerAge", 21);    // 执行检索    List result = query.list();     // 方法链编程风格    List result1 = session.createQuery(           "from Customer as c where c.name=:customerName"                  + " and c.age=:customerAge").setString(           "customerName", "Test").setInteger("customerAge", 21)    
  2.   
  3.        .list();    
    Query query = session.createQuery("from Customer as c where " +"c.name=:customerName and c.age=:customerAge");    // 动态绑定参数    query.setString("customerName", "Test");    query.setInteger("customerAge", 21);    // 执行检索    List result = query.list();     // 方法链编程风格    List result1 = session.createQuery(           "from Customer as c where c.name=:customerName"                  + " and c.age=:customerAge").setString(           "customerName", "Test").setInteger("customerAge", 21) 

           .list();  

 

2、QBC(Qurey By Criteria)检索方式

       采用HQL检索方式时,在应用程序中需要定义基于字符串形式的HQL查询语句。QBC API提供了检索对象的另一种方式,它主要由Criteria接口、Criterion接口和Expression类组成,它支持在运行时动态生成查询语句。

示例代码:   

Java代码 复制代码
  1. Criteria criteria = session.createCriteria(Customer.class);     
 Criteria criteria = session.createCriteria(Customer.class);   
 
Java代码 复制代码
  1. Criterion criterion1 = Expression.like("namr", "T%");   <SPAN> </SPAN>  
 Criterion criterion1 = Expression.like("namr", "T%");    
Java代码 复制代码
  1. Criterion criterion2 = Expression.eq("age", new Integer(21));    
 Criterion criterion2 = Expression.eq("age", new Integer(21));  
 
Java代码 复制代码
  1. criteria = criteria.add(criterion1);      
 criteria = criteria.add(criterion1);    
    
Java代码 复制代码
  1. criteria = criteria.add(criterion2);    // 执行检索      
criteria = criteria.add(criterion2);    // 执行检索    
    
Java代码 复制代码
  1. List result = criteria.list();     // 方法链编程风格    <SPAN> </SPAN>  
List result = criteria.list();     // 方法链编程风格     
Java代码 复制代码
  1. List result1 = session.createCriteria(Customer.class).add(Expression.like("namr", "T%")).add( Expression.eq("age", new Integer(21))).list();    
List result1 = session.createCriteria(Customer.class).add(Expression.like("namr", "T%")).add( Expression.eq("age", new Integer(21))).list();  

 

       Hibernate还提供了QBE(Qurey By Example)检索方式,它是QBC的子功能。QBE允许先创建一个随想模板,然后检索出和这个样板相同的对象。

示例代码:    

Java代码 复制代码
  1. Customer exampleCustomer=new Customer();   
  2. exampleCustomer.setAge(21);    
  3. List result1 = session.createCriteria(Customer.class).add(    
  4.            Example.create(exampleCustomer)).list();  
Customer exampleCustomer=new Customer();
exampleCustomer.setAge(21); 
List result1 = session.createCriteria(Customer.class).add( 
           Example.create(exampleCustomer)).list();

 

       QBE的功能不是特别强大,仅在某些场合下有用。一个典型的使用场合就是在查询窗口中让用户输入一系列的查询条件,然后返回匹配的对象。QBE只支持“” 和“”比较运算符,无法不大区间值,及其或的匹配。在这种情况下,还是采用HQL检索方式或QBC检索方式。 

3、SQL检索方式

       采用HQL或QBC检索方式时,Hibernate生成标准的SQL查询语句,使用于所有的数据库平台,因此这两种检索方式都是跨平台的

       有的应用程序可能需要根据底层数据库的SQL方言,来生成一些特殊的查询语句。在这种情况下,可以利用Hibernate提供的SQL检索方式。

示例代码:    

Java代码 复制代码
  1. Query query = session.createSQLQuery(   
  2. "select {c.*} from CUSTOMER as c where c.NAME like :customerName and c.AGE=:customerAge");    // 动态绑定参数    query.setString("customerName", "Test");       
  3. query.setInteger("customerAge", 21);    // 执行检索    
  4.   
  5.  List result = query.list();  
Query query = session.createSQLQuery(
"select {c.*} from CUSTOMER as c where c.NAME like :customerName and c.AGE=:customerAge");    // 动态绑定参数    query.setString("customerName", "Test");    
query.setInteger("customerAge", 21);    // 执行检索 

 List result = query.list();

 

4、使用别名

       通过HQL检索一个类时,如果查询语句的其他地方需要引用它,应该为这个类指定一个别名,as关键字用于设定别名,也可以将as关键字省略。

       QBC检索不需要由应用程序显式指定类的别名,Hibernate会自动把查询语句中的跟结点实体赋予别名“this”。 

5、多态查询

       HQL和QBC都支持多态查询,多态查询是指查询出当前类及所有子类的实例。多态查询对接口也使用。Hibernate不仅对from子句显式指定的类进行多态查询,而且对其他关联的类也会进行多态查询。 

6、对查询结果排序

       HQL和QBC都支持对查询结果进行排序。

Java代码 复制代码
  1. query = session.createQuery("from Customer as c order by c.name");    //排序       
  2. criteria.addOrder(Order.asc("name"));    
  3.  criteria.addOrder(Order.desc("age"));   
query = session.createQuery("from Customer as c order by c.name");    //排序    
criteria.addOrder(Order.asc("name")); 
 criteria.addOrder(Order.desc("age")); 

 

7、分页查询

       Query和Criteria接口都提供了用于分页显式查询结果的方法。

l         setFirstResult(int firstResult):设置从那个对象开始检索,参数表示这个对象在查询结果中的索引位置,索引位置的起始值为0。默认从0检索。

l         setMaxResult(int maxResults):设置一次最多检索出的对象数目。默认检索所有。

示例代码:    

Java代码 复制代码
  1. criteria = criteria.add(criterion1);      
  2.  criteria = criteria.add(criterion2);       
  3. criteria.setFirstResult(0);       
  4. criteria.setMaxResults(10);            // 执行检索    
  5. List result = criteria.list();     
  6.    query.setString("customerName", "Test");     
  7.    query.setInteger("customerAge", 21);      
  8.    query.setFirstResult(0);     
  9.    query.setMaxResults(10);            // 执行检索    
  10.   
  11.   List result = query.list();   
criteria = criteria.add(criterion1);   
 criteria = criteria.add(criterion2);    
criteria.setFirstResult(0);    
criteria.setMaxResults(10);            // 执行检索 
List result = criteria.list();  
   query.setString("customerName", "Test");  
   query.setInteger("customerAge", 21);   
   query.setFirstResult(0);  
   query.setMaxResults(10);            // 执行检索 

  List result = query.list(); 

 

8、检索单个对象

       Query和Criteria接口都提供了以下用于查询语句并返回查询结果的方法。

l         list()方法:返回一个List类型的查询结果。

l         uniqueResult()方法:返回单个对象。 

注:Query接口还提供了一个iterate()方法,它和list()方法一样,能返回所有满足条件的持久化对象,但是两者使用不同的SQL查询语句。

示例代码:    // 单个检索    Customer customer = (Customer) session.createQuery(           "from Customer as c order by c.name").setMaxResults(1)

           .uniqueResult();     // 单个检索    Customer customer = (Customer) session.createCriteria(

           Customer.class).setMaxResults(1).uniqueResult();

       如果明明知道一个对象,可以不调用setMaxResults(1)方法。 

9、在HQL查询语句中绑定参数

       A、按参数名字绑定。咋HQL中定义命名参数以“:”开头。

       B、按照参数位置绑定。在HQL查询语句中用“?”来定义参数的位置。

示例代码:    Query query = session.createQuery("from Customer as c where "           + "c.name=? and c.age=?");    // 动态绑定参数    query.setString(0, "Test");

    query.setInteger(1, 21); 

       除了以上用于绑定映射类型的参数的方法,Hibernate还提供了以下三个特殊的参数绑定方法。

(1)setEntity()方法:把参数与一个持久化类的实例绑定。(用id关联)

(2)setParameter()方法:绑定任意类型的参数。

(3)setProperties()方法:用于把命名参数与一个对象的属性值绑定。 

10、在映射文件中定义命名查询语句(略)

二.设定查询条件

       在where子句中给出的是对象的属性名,而不是字段名。

HQL和QBC支持的各种运算

 

 

运算类型

 

HQL运算符

 

QBC运算符

 

含义

 

比较运算

 

=

 

Expression.eq()

 

等于

<> 

 

Expression.not(Expression.eq())

 

不等于

> 

 

Expression.gt()

 

大于

 

>=

 

Expression.ge()

 

大于等于

< 

 

Expression.lt()

 

小于

 

<=

 

Expression.le()

 

小于等于

 

is null

 

Expression.isNull()

 

等于空值

 

is not null

 

Expression.isNotNull()

 

非空值

 

范围运算

 

in (列表)

 

Expression.in()

 

等于列表中的某一个值

 

not in (列表)

 

Expression.not(Expression.in())

 

不等于列表中的任意一个值

 

between 值1 and 值2

 

Expression.between()

 

大于等于值1并且小于等于值2

 

not between 值1 and 值2

 

Expression.not(Expression.between())

 

小于值1或者大于值2

 

字符串模式匹配

 

like

Expression.like()

 

字符串模式匹配

 

逻辑运算

 

and

Expression.add()或者Expression.conjunction()

 

逻辑与

 

or

Expression.or()或者Expression.disjunction()

 

逻辑或

 

not

Expression.not()

 

逻辑非

 1、比较运算

(1)不区分大小写:HQL使用lower()或者 upper()来实现(如:”…lower(c.name)=’tom’”);

                              QBC使用.ignoreCase()来实现(如:Expression.eq(“”,””) .ignoreCase())。

注:在HQL中,可以调用SQL函数。lower()转小写,upper()转大写。

       QBC不支持直接调用SQL函数。

 

(2)HQL查询支持数学运算表达式,而QBC不支持。

 

2、范围运算

HQL中的in示例: c.name in (‘aa’,’bb’);

QBC中的in示例: String[] names={‘aa’,’bb’}; Expression.in(‘name’,names);  。

 

3、字符串模式匹配

HQL和QBC通用:字符串模式中的通配符

 

 

通配符名称

 

通配符

 

作用

 

百分号

 

%

 

匹配任意类型且任意长度(长度可以为0)的字符串,如果是中文,需要两个百分号,即“%%”

 

下划线

 

_

 

匹配单个任意字符,常用来限制字符串表达式的长度

 

QBC:MatchMode类包含的各个静态常量实例

 

 

匹配模式

 

举例

 

MatchMode.START

 

Expression.like(“name”,”y”, MatchMode.START)

姓名以y开头

 

MatchMode.END

 

Expression.like(“name”,”y”, MatchMode. END)

姓名以y结尾

 

MatchMode.ANYWHERE

 

Expression.like(“name”,”y”, MatchMode. ANYWHERE)

姓名中包含y

 

MatchMode.EXACT

 

Expression.like(“name”,”y”, MatchMode. EXACT)

精确匹配,姓名必须为y

 

4、逻辑运算

三、连接查询

HQL和QBC支持的各种连接类型

 

 

在程序中指定的链接查询类型

 

HQL语法

 

QBC语法

 

使用范围

 

内连接

 

inner join 或者 join

 

Criteria.createAlias()

 

适用于有关联的持久化类,并且在映射文件中对这种关联关系作了映射。

 

迫切内连接

 

inner join fetch 或者 join fetch

 

不支持

 

隐式内连接

 

 

不支持

 

左外连接

 

left outer join 或者 left join

 

不支持

 

迫切左外连接

 

left outer join fetch 或者 left join fetch

 

FetchMode.EAGER

 

右外连接

 

right outer join 或者 right join

 

不支持

 

交叉连接

 

ClassA,ClassB

 

不支持

 

适用于不存在关联关系的持久化类

 

1、默认情况下关联级别的运行时检索策略

       采用配置文件中设置的检索策略,但有一个例外,那就是HQL会忽略映射文件设置的迫切左外连接策略,改用立即检索。

 

2、迫切左外连接

       显式指定对象的关联关系为迫切左外连接检索策略,可以覆盖映射文件中指定的检索策略。

例HQL

"from Customer c left join fetch c.orders o where c.name like 't%'"

+" o.name like 't%'"

例QBC

    List reslut=session.createCriteria(Customer.class)    .setFetchMode("orders",FetchMode.EAGER)    .add(Expression.like("name","t",MatchMode.START))

    .list();

 

       当使用迫切左外连接检索策略时,查询结果中可能会包含重复元素,可以通过一个HashSet来过滤重复元素:List result=….list();  HashSet set=new HashSet(result);

       Hibernate允许在一条查询语句中迫切左外连接多个多对一或一对一关联的类。

     List reslut=session.createCriteria(A.class)     .setFetchMode("this.b",FetchMode.EAGER)     .setFetchMode("this.c",FetchMode.EAGER)     .add(Expression.isNotNull("this.b"))     .add(Expression.isNotNull("this.c"))

     .list();

 

       当存在传递关联时,可以通过HQL来同时迫切左外连接关联类和依赖关联类,但QBC无法表达这种形式的迫切左外连接。

 

3、左外连接

       使用左外连接查询时,将根据映射文件的配置来决定关联的检索策略。

 

4、内连接

       QBC也支持内连接查询

     List reslut=session.createCriteria(Customer.class)     .add(Expression.like("name","t",MatchMode.SRART))     .createCriteria("orders")     .add(Expression.like("orderNumber","t",MatchMode.SRART))

     .list();

       默认情况下,QBC只检索出Customer对象,以上代码等同于以下HQL查询语句:

"select c from Customer c join  c.orders o where c.name like 't%'"

              + " and o.orderNumber like 't%'";

 

       createAlias()方法为关联属性(集合)赋予别名。如果希望QBC返回的集合也包含成对的Customer和Order对象,可以调用returnMaps()方法:

     List reslut=session.createCriteria(Customer.class)     .createAlias("orders","o")     .add(Expression.like("this.name","t",MatchMode.SRART))     .add(Expression.like("o.orderNumber","t",MatchMode.SRART))     .returnMaps()

     .list();

 

       采用内连接查询时,HQL与QBC有不同的默认行为,前者检索成对的对象,后者仅检索出要检索的单个对象(不包含关联的对象)。

 

5、迫切内连接

       显式指定对象的关联关系为迫切内连接检索策略,可以覆盖映射文件中指定的检索策略。

 

6、隐式内连接

一对一

"from Cunstomer c where c.homeAddress.provice like '%hai%'"

      List reslut=session.createCriteria(Customer.class)     .add(Expression.like("homeAddress.provice","t",MatchMode.SRART))

     .list();

 

多对一

"from Order o where o.customer.name like '%hai%'"

QBC 不支持隐式内连接,下边是不正确的,:

     List reslut=session.createCriteria(Order.class)     .add(Expression.like("customer.name","t",MatchMode.SRART))

     .list();

对于QBC,必须显式指定内连接查询:

     List reslut=session.createCriteria(Order.class)     .createAlias("customer","c")     .add(Expression.like("c.name","t",MatchMode.SRART))

     .list();

 

一对多或多对多

       隐式内连接不适用。

 

7、右外连接

 

8、使用SQL风格的交叉连接和隐式内连接

       HQL支持SQL风格的交叉连接查询。如: from Customer c, Order o

 

       在SQL语言中,显式内连接查询的语句使用inner join关键字,并且用on字句设定连接条件,形式为:

"select * from CUSTOMER c inner join ORDER o on c.ID=o.CUSTOMER_ID"

       隐式内连接查询语句不包含关键字阿,并且用where字句设定连接条件:

"select * from CUSTOMER c ,ORDER o where c.ID=o.CUSTOMER_ID"

 

9、关联级别运行是的检索策略

(1)没有显式指定,使用配置文件的,但有一个例外,那就是HQL会忽略映射文件设置的迫切左外连接策略,改用立即检索。

(2)如果显式指定,就会覆盖映射文件配置的检索策略。在HQL查询语句中显式指定检索策略包括以下内容。

l         left join fetch

l         inner join fetch

QBC通过FetchMode类来显式指定检索策略,有以下3个静态实例。

l         FetchMode.DEFAULT:默认,采用配置;

l         FetchMode.EAGER:覆盖,指定迫切左外连接检索策略;

l         FetchMode.LAZY:覆盖映射配置文件的检索策略,在程序中指定延迟检索策略。

关于java的struts+spring+hibernate框架下的MVC模式的图书管理系统 图书管理的用户权限管理和图书的增删改查,使用struts+spring+hibernate三大框架集成,使用MVC分层模式 立即下载

相关推荐

运放 + MOS管构成的恒流电路分析及实用环境器件参数选择

恒流电路

五花带点肉 2万+

Hibernate的检索方式详解(一)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://aumy2008.blogbus.com/logs/13835265.html          Hibernate提供以下几种检索对象的方式。 l         导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) l         OID检索方式。(按照对象的OID来检索对象。) l    ...

☆ lijun ☆ 201

sift、surf、orb 特征提取——三维重建

参考文章:[sift、surf、orb 特征提取及最优特征点匹配] 最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记。 SIFT 简介 SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。 实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的

bb_sy_w的博客 4362

java面试葵花宝典 (上)

原文链接:点击打开链接   http://blog.youkuaiyun.com/djluowen/article/details/5893501  感谢原作者哈 java面试葵花宝典 EJB 1:EJB: 答:   Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问 (跨进程、跨计算机) 。但EJB

leo_pcx 1483

MoveIt2 Servo实战:解锁UR机械臂在ROS2中的实时遥操作与动态响应

本文深入探讨了MoveIt2 Servo在UR机械臂实时遥操作中的应用,展示了如何通过ROS2实现毫秒级动态响应。文章详细解析了Servo的核心价值、环境配置、控制器适配及高级调优技巧,特别适用于需要高精度控制的工业场景,如VR手术训练和汽车装配线。

weixin_29044157的博客 246

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 930

Hibernate

1.Hibernate的检索方式 答:①导航对象图检索 ②OID检索 ③HQL检索 ④QBC检索 ⑤本地SQL检索 2. Forward与Global-Forward的区别 答:Forward是根据Action return的值找到对应的JSP页。当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。 3.持久化对象的三种状态...

xxp3369的专栏 476

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2607

3.[精通Hibernate笔记]Hibernate检索方式

1.Hibernate查询方式 Hibernate提供了以下几种检索对象的方式: HQL检索方式 HQL(Hibernate Q是面向对象的查询语言,它具有以下功能: 在查询语句中设定各种查询条件; 支持投影查询,仅查询出对象的部分属性; 支持分页查询; 支持连接查询; 支持分组查询,允许使用having和group by关键字; 提供内置聚合函数...

weixin_33835690的博客 115

谁还攥着旧的类加载器:Metaspace OOM 的元数据记账、类卸载条件与泄漏定位解析

MetaSpace区是JVM内存管理中的关键部分,负责存储类元数据。随着Java 8的推出,MetaSpace取代了PermGen区,但其灵活性也带来了新的挑战,尤其是在动态类加载和频繁类更新的场景下,容易导致MetaSpace内存溢出(OOM)问题。本文探讨了MetaSpace OOM的根本原因,包括类加载器泄漏、内存管理不当和GC效率低下等,并提供了一系列调优策略和解决方案,帮助开发者有效排查和防止此类问题的发生,确保应用程序的稳定性和高可用性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 15万+

Python爬虫实战:公共资源交易平台招标数据采集实战 - 从零构建企业情报系统(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1286

Hibernate的检索方式详解

[b] Hibernate提供以下几种检索对象的方式。[/b] [color=red] l 导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) 2 OID检索方式。(按照对象的OID来检索对象。) 3 HQL检索方式。(使用面向对象的HQL查询语言。) 4 QBC检索方式。(使用QBC(Qurey By...

学会坚强 201

英飞凌TC3xx之一起认识GTM(八)如何使用DTM实现死区时间配置

本文简要介绍英飞凌TC3xx系列芯片的DTM模块结构,以及有哪些相关寄存器可用于实现相关配置。

无所适从的我的博客 4642

Hibernate检索方式

我们在项目应用中对数据进行最多的操作就是查询,数据的查询在所有ORM框架中也占有极其重要的地位。那么,如何利用Hibernate查询数据呢?Hibernate为我们提供了多种数据查询的方式,又称为Hibernate的检索方式,主要有以下五种,我们来系统地学习一下。        1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)        2.OID检索方式。(按照对象的

lenotang的专栏 5468

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Hibernate检索对象的方式

Hibernate提供的检索对象的方式有: •导航对象图检索方式 –根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以导航到所有关联的Order对象,假如在关联级别使用 了延迟加载检索策略,那么首次执行此方法时,Hibernate会从数据库中加载关联的Order对象,否则就从缓存中取得Order对象

jialinqiang的专栏 989

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hibernate检索策略与检索方式

Hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用。但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大量的内存,二来会增加数据库的访问次数,使得程序的运行效率降低。为了合理的使用缓存,Hibernate提供了不同的检索策略来解决这些问题。 作用域       在说检索策略之前,先了解一下检

紫羽风的博客 3825

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Hibernate检索方式概述

Hibernate提供以下几种检索对象方式:1导航对象图检索方式,根据已加载的对象导航到其它对象2.OID检索方式,按照对象的OID来检索对象3.HQL检索方式,使用面向对象的HQL查询语言4.QBC检索方式,使用QBC(Query by Criteria)API来检索对象,这种API封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口5.本地SQL检索方式,使用本地数据库的SQL查询语句...

qq_40208605的博客 402

Hibernate3入门之第四章Hibernate的检索方式

Hibernate的检索方式 Hibernate的检索方式: 检索方式:查询的方式: 导航对象图检索方式 :根据已经加载的对象导航到其他对象 Customer customer = (Customer)session.get(Customer.class,1);//得到用户的实例化对象 customer.getOrders();// 获得到客户的订单 OID 检索方式 :按照对象的 O...

SYJ_1835_LPM的博客 268

Hibernate的五种检索方式

Hibernate的五种检索方式分别是: 导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) OID检索方式。(按照对象的OID来检索对象。) HQL检索方式。(使用面向对象的HQL查询语言。) QBC检索方式。(使用QBC(Qurey By Criteria) API来检索对象。) .本地SQL检索方式。(使用本地数据库的SQL查询语句。) 1、导航对象图检索方式 ...

qq_40714770的博客 1105

Hibernate的检索方式

hibernate支持五种方式检索 第一种导航对象图检索 : 在程序中已经获得持久态对象,通过对象关联关系去检索出相关对象数据          例如 : Customer customer = session.get(Customer.class ,1 ); // 持久Customer                             //由于customer关联了order

欢迎来到跃行者技术博客 1549

《精通Hibernate》学习(7)——Hibernate的检索方式(上)

一、Hibernate检索方式简介   Hibernate提供以下几种检索对象的方式: 导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) OID检索方式。(按照对象的OID来检索对象。) HQL检索方式。(使用面向对象的HQL查询语言。) QBC检索方式。(使用QBC(Query By Criteria)API来检索对象) 本地SQL检索方式。(使用本地数

OOM 4272

hibernate检索方式详解

一.hibernate检索方式简介 通过前面的学习,我们能够在项目中引入hibernate支持,并对有关联的表进行配置。而在项目开发中,对数据库进行最多的操作 就是查询,接下来,将详细的介绍几种hibernate中常见的检索方式。 二.hibernate检索方式一:对象图检索方式 对象图检索方式适用于表与表之间有关系时的检索,意思是根据已加载的对象,导航到他的关联对象。利用对象之间的关系进

wonabi的博客 385
上一篇: mysqldump的常用语句及各参数详解
下一篇: hibernate检索方式
MyJavaBlog
博客等级 码龄16年 11粉丝 126原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值