传智播客java培训2010年4月24日hibernate学习

本文介绍了作者在传智播客java培训中学习Hibernate的心得,强调了实战经验对于编程技能提升的重要性。文章详细讲解了Hibernate中的一对多关联映射,包括在类中的表现形式、配置文件的设置以及集合的选择(如List、Set、Bag)。还提到了Hibernate对象的状态管理,包括临时状态、持久化状态、游离态和删除状态,并讨论了session的各种操作方法,如saveOrUpdate、flush、refresh和clear。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天只是总结了映射的多对一的关系,以及其中一点知识要点。今天hibernate的课程就结束了,今天的课,听是听懂了,但是大家都知识,写程序不是只是能听懂就行了,更多的是需要在实战中吸取经验,有好多好多的问题不是老师在课堂上能传授得完的,更多的是要去实战,一行一行的代码都要自己去敲,错误遇到了,要自己一心一意去排除,这样才能让自己的水平有所提升。

但是即使是听,今天也算是让我大开眼界了,让我就想起了以前我在公司上班的时候的前辈,他们写的代码很忧美,也知道要去控制代码的质量,但是单从Hibernater的理解上来看,他没有这儿讲授的深,可能也是整体公司招人的标准不是很高。今天的知识,我听懂了百分之八十,但是只吸引了百分之十,因为很多东西,根本就是记不住的,自己没有练习,所以不是很牢固,明天放假,所以啊,就是重新看老师的视频,将不懂的知识点一一回顾,复习,练习。

Hibernate 位于持久化层。在实际的开发中不可能只是一个表的存在,是多个表的存在。

Hibernate关联的方式在类中是以属性的方式体现。

所以啊,边看视频,边总结,如下:

 

映射一对多关联:

不论是一对多,还是多对一,他们在表层面表显都很简单,就是一个外键将两个表出联系起来,面是一对多就是一方的主键作为多方的外键进行引用,就体现了两表的关系。但是在类中相比表中却要复杂一点:两个表,分别对应JAVA中的两个实体类,在多方的类中引用一方的引用,就是多对一关联。在配置文件中,配置也很简单如下:

<many-to-one name="属性名" class="属性名的类型(一方)" column="表中的外键列名">

如果在一方进行维护,就是一对多的关系,所以,肯定得用一个可以装多个元素的容器,所在在JAVA类中,就会想到用数组,或许是集合。在Hibernate中选用的是集合,然而在选择集合是非常有学问的:

1.list集合可以重复,且有序。

2.Set集合不可以重复。

3.Bag,是hibernate提供的。

在使用的时候都大同小异,根据不同的情况选择合适的就OK了。在这儿选择最常用的Set。在一方用Set集合来装多方的对象,要注意的是hibernate的底层并没有采用Set,而是继承了集合使用了自己的,所经不能写成HashSet set = new HashSet(),而必须采用Set set = new HashSet();同时要在一方的配置文件中配置该集合,如下:

<set name= cascade= inverse= lazy=> name 是属性名字,cascade 是否级联 lazy懒 加载。inverse 你可以简单看作是否对方来维护表关联关系也就是说false时对方不 维护,自己来维护反之,true时自己不维护
<key column="cid" />------------>是一方与多方关联的名字。

<one-to-many class="" /> -------->多方的类全路径

hibernate2.X的持久化对象有3种状态hiberante3.x之后有四种状态. 临时状态:刚new出来的对象,没有和session关联,同时数据库中没有记录(tranisent), 持久化状态就是与session关联并且数据库中有记录(persistent,托管) 游离态:没有session关联数据库可能有记录(destached), 删除状态(deleted),该状态是在3.x中加入的。
     session的保存方法,更新方法,saveOrUpdate方法,都可以将对象与session相关联。session可以保存一个new出来的对象,使其为执久化状态,当保存方法保存一个 游离态的对象时,执行的也是插入操作。
saveOrUpdate方法到底是保存还是更新主要取绝于对象的id是否有值。有则更新,无则保存。
    session 的flush方法,是清理缓存,让数据库中数据与缓存中的数据同步,但不提交。而refresh方法是让session中的数据与数据库中的数据同步。clear方法是清空缓存中的数据。flush 和 clear方法的组合可以实现批量插入数据,好比,一个给数据库中如果要插入100000万条记录,如果不采取处理的方法,直接将所有的数据先放入缓存,就可以造成缓存溢出。就可以,每一百条,就flush,然后clear清空缓存。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值