学习hibernate的部分小结

外键在多的那一方创建,指向一的那一方外键
以客户和联系人为例:创建两个实体类:Customer客户和ConnectMan联系人,分别拥有属性:客户id姓名级别来源电话手机,联系人的姓名,性别,id,电话
一个客户可以有多个联系人而一个联系人只能有一个客户,让两个实体类相互表示Set与Customer
在客户映射文件中,表示所有联系人用set集合和Set标签
key外键值
one-to-many标签:


在联系人映射配置文件中使用many-to-one标签:name属性class全路径column列


在客户表示联系人,在联系人表示客户,建立客户对象与联系人对象的关系,简化写法:一般根据客户添加联系人,要在客户内加映射文件Set标签内进行配置,cascade=“save—update”,此时把联系人放到客户内就可以了


让一的那一方放弃外键维护,在客户的set属性里加inverse="true",放弃关系维护


维护第三张表:让某个用户拥有某个角色,查新角色然后放到用户里面去,删除remove


对象导航查询,根据id查询后获得其id的联系人;(一对多)
OID查询
hql查询:hibernate query language;hibernate查询语言,其操作的是实体类和其属性,使用的是Query对象写hql语句,通过对象获得其结果,查询所有客户:Form Customer
          条件查询:From 实体类名字 +where 实体类属性值+and 实体类属性值
           From 实体类名字 +where 实体类属性 like=?
   From 实体类名称 Order By 实体类属性 DESC/ASC
   分页中不能使用limit,但里面实现了分页方法的封装,setFirstResult(x);设置开始的位置,setMaxResults(y);设置每页多少条信息
   查询部分字段的值被称之为投影查询;hql语句:select 属性名称,属性名称 Form 实体类名称,hql的select后不能使用*,其不支持


QBC查询Criteria查询
         也是根据实体类和属性查询,创建Criteria对象,调用方法得到结果
          创建Criteria对象,在对象里add使用Restrictions类和其方法,如.eq方法,.like方法等等
 创建Criteria对象,其对象有addOrder方法,方法里Order.desc/Asc("实体类属性")可以实现排序
 创建Criteria对象,调用setFirstResult(x);设置开始的位置,setMaxResults(y)每页显示;(当前页-1)*每页显示数=开始位置
 统计:创建Criteria对象,调用setProjections(Project.rowCount())方法,调用方法获得结果Object obj=criteria.uniqueResult();返回的是long类型再转int型为obj.intvalue();
 离线查询:DetachedCriteria类对象DetachedCriteria detachedCriteria=DetachedCriteria.forClass(实体类.class);
 Criteria criteria=detachedCriteria.getExcuteableCriteria(session);List<实体类> list=criteria.list()...;
 迫切内链接返回的list每部分是对象的存取形式
 内链接返回的每部分是List形式
本地Sql查询使用SQLQuery对象 


检索策略的分类:立即查询:get
                 延迟查询:load:分成两类:类级别的延迟(根据id查询返回实体类对象),关联级别的延迟,比如要查询客户再查询其联系人
批量抓取:batch-size="",里面值越大发送的sql语句越少
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值