Hibernate:
    insert
    into
        Customer
        (cname)
    values
        (?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?


Hibernate:
    insert
    into
        Customer
        (cname)
    values
        (?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?


Hibernate:
    insert
    into
        Customer
        (cname)
    values
        (?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    insert
    into
        orders
        (addr, cno)
    values
        (?, ?)
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?
Hibernate:
    update
        orders
    set
        cno=?
    where
        oid=?


初始化数据之后使用三种方式检索数据。


客户这里打印也打印出订单的集合,订单这边又打印客户了。这是死循环了,所以这里应该去掉一方的打印。


用SQL的时候给列起过别名。Mysql数据库用As起别名,HQL也是支持这种操作的。



package cn.itcast.test;import java.util.Arrays;
import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import cn.itcast.utils.HibernateUtils;
import cn.itcast.vo.Customer;
import cn.itcast.vo.Order;/*** Hibernate的检索方式* @author zhongzh**/
public class HibernateDemo1 {@Test/** 使用别名:* */public void demo3(){Session session = HibernateUtils.openSession();Transaction tx = session.beginTransaction();//使用别名//List<Customer> list = session.createQuery("from Customer as c where c.cname = ?").list();
/*       List<Customer> list = session.createQuery("from Customer as c").list();System.out.println(list);*///使用别名:带参数
/*       List<Customer> list = session.createQuery("from Customer as c where c.cname = ?").setString(0, "小沈").list();System.out.println(list);*///别名as可以省略
/*              List<Customer> list = session.createQuery("from Customer  c").list();System.out.println(list);*///不支持 select * from Customer写法.可以写成select 别名  from Customer as 别名;//List<Customer> list =  session.createQuery("select * from Customer").list();//createQuery不支持select *的写法,会报语法错误List<Customer> list =  session.createQuery("select c from Customer c").list();//createQuery不支持select *的写法,会报语法错误
      System.out.println(list);tx.commit();session.close();}@Test
public void demo2(){Session session = HibernateUtils.openSession();Transaction tx = session.beginTransaction();//1.使用HQL查询所有客户信息:
/*    Query query =  session.createQuery("from Customer");//"from Customer"是一个HQL语句。返回一个Query接口query.list();**///session.createQuery("from Customer").setString("", "").list();//HQL支持方法链编程
/*    List<Customer> list = session.createQuery("from Customer").list();//HQL支持方法链编程for(Customer customer:list){System.out.println(customer);}*///2.使用QBC的方式查询所有记录:
/*    List<Customer>  list=  session.createCriteria(Customer.class).list();//返回Criteria接口for (Customer customer:list){System.out.println(customer);}*///3.使用SQL语句查询所有记录:
/*    List<Object[]> list = session.createSQLQuery("select * from customer").list();//这里要写SQL语句 这里操作的是数据库表//但是HQL和QBC方式操作的都是对象  这种SQL查询的方式得到的List集合不会直接装到实体对象里面。而是放到Object数组中。for(Object[] objects:list){System.out.println(Arrays.toString(objects));//把Object数组打印一下}*///4.使用SQL语句查询所有记录:封装到实体对象中List<Customer> list = session.createSQLQuery("select * from customer").addEntity(Customer.class).list();//这里要写SQL语句 这里操作的是数据库表//但是HQL和QBC方式操作的都是对象  这种SQL查询的方式得到的List集合不会直接装到实体对象里面。而是放到Object数组中。这也是方法链编程for(Customer customer:list){System.out.println(customer);//这个时候就是打印出实体对象的方式
    }tx.commit();session.close();
}
@Test
/** * 初始化数据*/
public void demo1(){Session session = HibernateUtils.openSession();Transaction tx = session.beginTransaction();Customer customer = new Customer();//customer.setCname("小金");//customer.setCname("小明");customer.setCname("小沈");for(int i=0;i<=10;i++){Order order = new Order();//order.setAddr("西三旗"+i);order.setAddr("山东"+i);order.setCustomer(customer);customer.getOrders().add(order);}session.save(customer);//还需要设置订单,如果不想设置订单那就要配置级联才行
  tx.commit();session.close();
}
}

package cn.itcast.vo;import java.util.HashSet;
import java.util.Set;/*** 客户的实体:* @author 姜涛**/
public class Customer {private Integer cid;private String cname;// 一个客户有多个订单.private Set<Order> orders = new HashSet<Order>();public Integer getCid() {return cid;}public void setCid(Integer cid) {this.cid = cid;}public String getCname() {return cname;}public void setCname(String cname) {this.cname = cname;}public Set<Order> getOrders() {return orders;}public void setOrders(Set<Order> orders) {this.orders = orders;}@Overridepublic String toString() {//客户这里打印也打印出订单的集合。这是死循环了,所以这里应该去掉一方的打印。/*    return "Customer [cid=" + cid + ", cname=" + cname + ", orders="+ orders + "]";*/return "Customer [cid=" + cid + ", cname=" + cname + "]";//客户这里去掉订单集合的打印
        }}

package cn.itcast.vo;
/*** 订单的实体:* @author 姜涛**/
public class Order {private Integer oid;private String addr;// 订单属于某一个客户.放置一个客户的对象.private Customer customer;public Integer getOid() {return oid;}public void setOid(Integer oid) {this.oid = oid;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}public Customer getCustomer() {return customer;}public void setCustomer(Customer customer) {this.customer = customer;}@Overridepublic String toString() {//订单这边又打印客户了。这是死循环了,所以这里应该去掉一方的打印。return "Order [oid=" + oid + ", addr=" + addr + ", customer="+ customer + "]";}}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--  <class name="cn.itcast.hibernate3.demo2.Customer" table="customer">--><class name="cn.itcast.vo.Customer"><!-- 配置唯一标识 --><id name="cid" column="cid"><generator class="native"/></id><!-- 配置普通属性 --><property name="cname" column="cname" length="20"/><!-- 建立映射 --><!-- 配置一个集合 <set>的name Customer对象中的关联对象的属性名称. --><!-- 这里把级联去掉  要最简短的配置 <set name="orders" cascade="save-update" inverse="true">
-->
<set name="orders" cascade="save-update"><!-- <key>标签中column:用来描述一对多多的一方的外键的名称. --><key column="cno"></key><!-- 配置一个<one-to-many>标签中class属性:订单的类的全路径 --><!--  <one-to-many class="cn.itcast.hibernate3.demo2.Order"/>--><one-to-many class="cn.itcast.vo.Order"/></set></class>
</hibernate-mapping>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- <class name="cn.itcast.hibernate3.demo2.Order" table="orders">--><class name="cn.itcast.vo.Order" table="orders"><!-- 配置唯一标识  --><id name="oid" column="oid"><generator class="native"/></id><!-- 配置普通属性 --><property name="addr" column="addr" length="50"/><!-- 配置映射 --><!-- <many-to-one>标签name     :关联对象的属性的名称.column    :表中的外键名称.class    :关联对象类的全路径--><!--  <many-to-one name="customer" column="cno" class="cn.itcast.hibernate3.demo2.Customer"/>--><many-to-one name="customer" column="cno" class="cn.itcast.vo.Customer"/></class>
</hibernate-mapping>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>
<session-factory><!-- 必须去配置的属性 --><!-- 配置数据库连接的基本信息: --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url"><!-- 连接的数据库是hibernate3_day02 -->jdbc:mysql:///hibernate3_day03</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password"></property><!-- Hibernate的方言 --><!-- 生成底层SQL不同的 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 可选的属性 --><!-- 显示SQL --><property name="hibernate.show_sql">true</property><!-- 格式化SQL --><property name="hibernate.format_sql">true</property><property name="hibernate.connection.autocommit">false</property><!-- hbm:映射 to DDL: create drop alter --><property name="hibernate.hbm2ddl.auto">update</property><!-- C3P0连接池设定--><!-- 使用c3po连接池  配置连接池提供的供应商--><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><!--在连接池中可用的数据库连接的最少数目 --><property name="c3p0.min_size">5</property><!--在连接池中所有数据库连接的最大数目  --><property name="c3p0.max_size">20</property><!--设定数据库连接的过期时间,以秒为单位,如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 --><property name="c3p0.timeout">120</property><!--每3000秒检查所有连接池中的空闲连接 以秒为单位--><property name="c3p0.idle_test_period">3000</property><!-- 通知Hibernate加载那些映射文件 --><!--     <mapping resource="cn/itcast/hibernate3/demo1/Book.hbm.xml" /><mapping resource="cn/itcast/hibernate3/demo2/Customer.hbm.xml" /><mapping resource="cn/itcast/hibernate3/demo2/Order.hbm.xml" /><mapping resource="cn/itcast/hibernate3/demo1/Book.hbm.xml" /> --><!-- 把映射文件中的这几个都拿掉  重新把它引入  --><mapping resource="cn/itcast/vo/Customer.hbm.xml" /><mapping resource="cn/itcast/vo/Order.hbm.xml" /></session-factory>
</hibernate-configuration>

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6682696.html

day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询相关推荐

  1. Hibernate学习(八)———— Hibernate检索策略(类级别,关联级别,批量检索)详解...

    序言 很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要 ...

  2. 【java】itoo项目实战之hibernate 懒载入优化性能

    在做itoo 3.0 的时候,考评系统想要上线,就開始导入数据了,仅仅导入学生2万条数据,可是导入的速度特别的慢.这个慢的原因是由于导入的时候进行了过多的IO操作.可是导入成功之后,查询学生的速度更加 ...

  3. Hibernate程序性能优化的考虑要点

    Hibernate程序性能优化的考虑要点 Tag:java,j2ee,hibernate,O/R mappling, spring,性能,效率 本文依照HIBERNATE帮助文档,一些网络书籍及项目经 ...

  4. Hibernate之性能优化

    本文主要包括以下内容 性能优化的方法 发出的sql语句越少,性能越高 方法: 1.懒加载 2.抓取策略 3.缓存策略 4.HQL语句 懒加载 类的懒加载 1.利用session.load方法可以产生代 ...

  5. Elasticsearch 检索性能优化实战指南

    1.当我们在说 Elasticsearch 检索性能优化的时候,实际在说什么?! 检索响应慢! 并发检索用户多时,响应时间不达标 卡死了! 怎么还没有出结果? 怎么这么慢? 为啥竞品产品的很快就返回结 ...

  6. Hibernate 系列 02 - Hibernate介绍及其环境搭建

    引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...

  7. hibernate示例_通过示例Hibernate–第1部分(删除孤儿)

    hibernate示例 所以我想做一系列的冬眠例子,展示冬眠的各种特征. 在第一部分中,我想展示有关删除孤儿功能及其在故事情节中的使用方式. 因此,让我们开始:) 先决条件 : 为了尝试以下示例,您将 ...

  8. Hibernate的事务级别控制与查询对象的API(Query查询与Criterial查询+离线查询)

    1.事务级别控制 可以在Hibernate的配置文件中对事务进行配置.配置文件中,可以设置事务的隔离级别.其具体的配置方法是在hibernate.cfg.xml文件中的<session-fact ...

  9. Hibernate的集中查询方式 : hql查询,QBC查询和QBE查询

    转载:http://blog.csdn.net/iijse/article/details/6161143 通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询:  1.QBE( ...

最新文章

  1. mysql的altertable_mysql 的 alter table 操作性能小提示
  2. Master Data makes SAP Retail special
  3. GPUImage简单说明
  4. tomcat 设置虚拟路径
  5. mysql高并发下主键冲突
  6. Linux深入学习专业书
  7. HTML5前端知识分享:Vue入门
  8. [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)
  9. koa --- 自制简易的koa-router
  10. HDU5129 - Yong Zheng's Death
  11. 一步步实现SDDC--多角色服务器部署
  12. CentOS下编译64位的libpython2.6.so.1.0库
  13. python程序员面试题精选100题_在Python程序员面试中被问的最多的10道题
  14. Gradle使用Junit5进行test
  15. 洛谷P5322 [BJOI2019]排兵布阵【分组背包】
  16. 华中科技大学计算机视觉张朋,计算机视觉与深度学习前沿研讨会圆满举办
  17. 时间t与时间管理——柳比歇夫、德鲁…
  18. c语言课程设计总结心得大全,c语言课程设计的心得体会
  19. coturn mysql_Coturn / turnserver:错误437:不匹配的分配:错误的事务ID(WebRTC)
  20. 如何用随机森林算法,在深海养肥一群鱼

热门文章

  1. 二、Windows基础数据类型
  2. Android 4.4沉浸式状态栏的实现
  3. Bootstrap—基础样式定义
  4. C# VC HTTP POST GET(转)
  5. 非常好用的网站状态监控服务:SiteUpTime,监控你的Http/Mail/Ping etc.
  6. 脱壳实践之手动构造输入表
  7. 文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: FormMain --- 未能加载基类...
  8. 寒假CF- WA了不要怕!
  9. oracle循环插入数据用于测试
  10. 8.继续分析一破解加密码获取-最最最简单的注册机