随笔-54  评论-0  文章-2  trackbacks-0
今天讲的是一对一等知识,这两天精力不太好,课堂效率不高,好在下课后还看视频。整理笔记:

一对一:用的较少
 
举例:人员和身份证
设计表
user 存在用户表,photo存在photo表

一对一关联:外键关联
 
另一种方法:主键关联
 
 
注意:constrained = true
多对多:

老师对学生 学生有多个老师
 
只有删除和插入的概念,没有更新的概念

                   
 
 检索方式:
检索方式简介
HQL检索方式
1。7。调用用户自定义的函数
8。嵌入式查询
9。动态绑定参数在查询语句中设定各种查询条件
2。支持投影,仅检索出对象的部分属性
3。支持分页
4。连接查询
5。分组查询
6。内置聚集函数
Query query = session.createQuery(“from Customer as c where c.name=:custoerNa
me and c.age = :customerAge”);
query.setString(“customerName”,”Tom”);
query.setInteger(“customerAge,21);
query.list();

2. QBC检索方式
 
3.多态查询    (查询所有该类以及该类的子类所对应的表,如果查询接口,则查询的是实现的是查询所有实现该接口的类所对应的表

session.createQuery(“from Employee”);
查询出所有的实体
from java.lang.serializable(支持接口)
from java.lang.Object

检索方式简介
对查询结果排序
hql 查询:
session.createQuery(“from Employee c order by c.name”);
qbc查询:
session.createCriteria(Customer.class).addOrder(Order.asc(“id”));

分页查询
hql 查询:
session.createQuery(“from Employee c order by c.name”).setFirstResult(10)
                                   .setMaxResults(10);
qbc查询:
session.createCriteria(Customer.class)
              .addOrder(Order.asc(“name”))
              .setFirstResult(97).setMaxResult(10).list();


检索单个对象
hql 查询:
session.createQuery(“from Employee c order by c.name”)
                     .setMaxResults(1).uniqueResult();
qbc查询:
session.createCriteria(Customer.class)
              .addOrder(Order.asc(“name”))
    .setMaxResult(1).uniqueResult();
 
检索方式简介
对查询结果排序
hql 查询:
session.createQuery(“from Employee c order by c.name”);
qbc查询:
session.createCriteria(Customer.class).addOrder(Order.asc(“id”));

分页查询
hql 查询:
session.createQuery(“from Employee c order by c.name”).setFirstResult(10)
                                   .setMaxResults(10);
qbc查询:
session.createCriteria(Customer.class)
              .addOrder(Order.asc(“name”))
              .setFirstResult(97).setMaxResult(10).list();


检索单个对象
hql 查询:
session.createQuery(“from Employee c order by c.name”)
                     .setMaxResults(1).uniqueResult();
qbc查询:
session.createCriteria(Customer.class)
              .addOrder(Order.asc(“name”))
    .setMaxResult(1).uniqueResult();

绑定参数

hql 查询:
session.createQuery(“from Employee c where c.name =
                              :customerName”);
query.setString(“customer”,”Tom”);

   报表查询
 
小结
比较方面              HQL检索                   QBC检索
可读性           优点:和sql相近,易读         将语句肢解成一组criteria,较差
功能             支持各种查询                  不支持报表查询和子查询。有限的连接查询
查询语句形式     基于字符串形式的sql           更加面向对象
何时被解析       运行时被解析                  编译时被解析,更易排错
可扩展性         不具扩展性                    用户可扩展criteria接口
对动态查询语句的支持 支持动态查询,编程麻烦    适合动态生成查询语句

直接弄个connection ,断点一下,看是否用的c3p0

在学习中一定要不断调试代码!努力消化一天所学!
posted on 2010-01-31 23:32 d66380022 阅读(378) 评论(0)  编辑  收藏