ssh进阶之Hibernate(二)

    今天观看了斯皮尔伯格导演的《头号玩家》 内心很是震撼,科技感爆棚,所以坚信自己,用程序改变世界。

    今天总结的是Hibernate的多对一的重点 和一些零散的重要的知识点,话不多说,直接进入正题

    首先是实体类的状态:

临时态:OIDnull 并且seession 无关联 ,一般new出来的都是临时态

持久态:OID不为null 并且seession 关联,一般save,update,get,Query得到的都是持久态

游离态:OID不为null ,与session关联,一般的close

删除态:预计删除,一般为delete

    附一张传智播客的图片以便理解

ssh进阶之Hibernate(二)

    Session的有关的方法:

save(): 表示使一个临时态的对象转换成持久态的对象

persist(): 表示使一个临时态的对象转换成持久态的对象,但是没有事务的支持

update():使游离态转换成为持久态,如果在update过程中已经有一个相同oid的持久态对象,那么会报错,解决方法就是在 实体类.hbm.xml的id中配置 unsave-value='那个id'

saveOrUpdate():如果是临时态那么就执行save方法 如果是游离态那么就执行update方法

merge():表示把游离态的对象的属性复制到持久化对象中

    多对一映射(双向): 这里介绍的是双向的关系:

首先创建实体类:Student ,Teacher 这里省略get、set 方法

ssh进阶之Hibernate(二)

ssh进阶之Hibernate(二)

然后建立对应的hbm.xml 文件

ssh进阶之Hibernate(二)

ssh进阶之Hibernate(二)

    配置Hibernate.cfg.xml

  ssh进阶之Hibernate(二)

  自我多对一(双向):

ssh进阶之Hibernate(二)

ssh进阶之Hibernate(二)