day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询
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检索方式:简单查询及别名查询相关推荐
- Hibernate学习(八)———— Hibernate检索策略(类级别,关联级别,批量检索)详解...
序言 很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要 ...
- 【java】itoo项目实战之hibernate 懒载入优化性能
在做itoo 3.0 的时候,考评系统想要上线,就開始导入数据了,仅仅导入学生2万条数据,可是导入的速度特别的慢.这个慢的原因是由于导入的时候进行了过多的IO操作.可是导入成功之后,查询学生的速度更加 ...
- Hibernate程序性能优化的考虑要点
Hibernate程序性能优化的考虑要点 Tag:java,j2ee,hibernate,O/R mappling, spring,性能,效率 本文依照HIBERNATE帮助文档,一些网络书籍及项目经 ...
- Hibernate之性能优化
本文主要包括以下内容 性能优化的方法 发出的sql语句越少,性能越高 方法: 1.懒加载 2.抓取策略 3.缓存策略 4.HQL语句 懒加载 类的懒加载 1.利用session.load方法可以产生代 ...
- Elasticsearch 检索性能优化实战指南
1.当我们在说 Elasticsearch 检索性能优化的时候,实际在说什么?! 检索响应慢! 并发检索用户多时,响应时间不达标 卡死了! 怎么还没有出结果? 怎么这么慢? 为啥竞品产品的很快就返回结 ...
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- hibernate示例_通过示例Hibernate–第1部分(删除孤儿)
hibernate示例 所以我想做一系列的冬眠例子,展示冬眠的各种特征. 在第一部分中,我想展示有关删除孤儿功能及其在故事情节中的使用方式. 因此,让我们开始:) 先决条件 : 为了尝试以下示例,您将 ...
- Hibernate的事务级别控制与查询对象的API(Query查询与Criterial查询+离线查询)
1.事务级别控制 可以在Hibernate的配置文件中对事务进行配置.配置文件中,可以设置事务的隔离级别.其具体的配置方法是在hibernate.cfg.xml文件中的<session-fact ...
- Hibernate的集中查询方式 : hql查询,QBC查询和QBE查询
转载:http://blog.csdn.net/iijse/article/details/6161143 通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询: 1.QBE( ...
最新文章
- mysql的altertable_mysql 的 alter table 操作性能小提示
- Master Data makes SAP Retail special
- GPUImage简单说明
- tomcat 设置虚拟路径
- mysql高并发下主键冲突
- Linux深入学习专业书
- HTML5前端知识分享:Vue入门
- [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)
- koa --- 自制简易的koa-router
- HDU5129 - Yong Zheng's Death
- 一步步实现SDDC--多角色服务器部署
- CentOS下编译64位的libpython2.6.so.1.0库
- python程序员面试题精选100题_在Python程序员面试中被问的最多的10道题
- Gradle使用Junit5进行test
- 洛谷P5322 [BJOI2019]排兵布阵【分组背包】
- 华中科技大学计算机视觉张朋,计算机视觉与深度学习前沿研讨会圆满举办
- 时间t与时间管理——柳比歇夫、德鲁…
- c语言课程设计总结心得大全,c语言课程设计的心得体会
- coturn mysql_Coturn / turnserver:错误437:不匹配的分配:错误的事务ID(WebRTC)
- 如何用随机森林算法,在深海养肥一群鱼
热门文章
- 二、Windows基础数据类型
- Android 4.4沉浸式状态栏的实现
- Bootstrap—基础样式定义
- C# VC HTTP POST GET(转)
- 非常好用的网站状态监控服务:SiteUpTime,监控你的Http/Mail/Ping etc.
- 脱壳实践之手动构造输入表
- 文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: FormMain --- 未能加载基类...
- 寒假CF- WA了不要怕!
- oracle循环插入数据用于测试
- 8.继续分析一破解加密码获取-最最最简单的注册机