hibernate相关知识

本文详细解析了Hibernate中的对象状态(瞬时态、持久态、脱管态)、关联映射(多对一、一对多、一对一等)、级联操作及其原理,同时介绍了集合使用、属性作用、懒加载机制以及关联继承等内容。
一:
hibernate中有瞬时态,持久态,        脱管态。
           在session中     关闭session后 
当不清楚瞬时的还是脱管的时候用sava,Update。瞬时的id没有值,脱管的有值。调用merger后对象还是脱管。
瞬时的      sava ,update ,     get/load          持久的 
  delete
二:HQL与Critera  两者都是查询
查询语句:from Student as student where student.name=?
分页:query.setFirstResult(10)----query.setMaxResults(23)
Critera
Criteria c=s.createCriteria(Student.class);
用c.add(Restrictions.eq("name", name))等添加约束
都有:List<Student> list=query.list();
     Student stu=(Student) query.uniqueResult();
使用ORM(object Relation Mapping)框架来解决。
开发流程:Domain object ->mapping ->db(官方推荐)
  由DB开始,用工具生成mapping和Domain object(使用较多)

三:关联
关联映射
多对一(Employee-Department)  用得最多的
一对多(Department-Employee)
一对一(Person-IdCard)
<
多对多(teacher-student)   当数据多的时候尽量少用
组件映射(User-Name)
聚合映射(set,list,map,bag)
inverse和cascade(Employee-Department)
如果在属性中还有值 映射为:
<component name="">
 <property name="" colum=""/>
 <property name="" colum=""/>
</component>

四:集合
用set比较多,因为不重复,不按顺序。
list,重复,按顺序。

五:hibernate级联
<set name="" cascade="save-update">
 <key column="" />
 <one-to-many class=""/>
</set>
级联主键保存了,外键里面的也保存。
all,所有的  save-update 在更新的情况下还有delectable,lock,persist等   dlecte-orphan在一对多情况下
多对多不建议使用级联。

六:属性的作用与原理分析
最好一方控制,可以提高效率 
放弃关系维护:set中加inverse="true" 不能在有序的集合里实施!!!只会到集合中出现!!

七:关联继承
class中加diascriminator-value="0"
增加<subclass name="" column="" diascriminator-value="1">
 <property name="">
    </subclass>
    <subclass name="" column="" diascriminator-value="2">
 <join column="">
     <key column=""/>
     <property name=""/>
 </join>
    </subclass>
第二种:三张表不能有相同的
<union-subclass name="" table="">
<property name=""/>
</union-subclass>
八:懒加载   通过asm.jar  cglib.jar两个包实现的
提高效率,尽量推迟连接数据库,直到必须访问。
one-to-one懒加载问题
满足三个条件:主表不能有constrained=true,lazy!=false主表没有懒加载;constrained=true;fetch=select。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值