hibernate学习:联合主键

一:直接看程序


二:源码分析

(1)在Teacher中将作为联合主键的属性都加上@id注解
@Id
private int id;
@Id
private String name;

(2)在Teacher类,加上注解@IdClass(value = TeacherPK.class)置顶联合主键类

(3)TeacherPK作为联合主键对象,必须实现序列化接口


否则异常:
Exception in thread "main" org.hibernate.MappingException: composite-id class must implement Serializable: com.hibernate.model.TeacherPK

三:什么是序列化
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
序列化分为两大部分:序列化和反序列化。
序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。
反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。




联合主键加序列化目的:
(1)对象存储在内存中,如果集群服务器启动一个down机,需要将内存中的数据转移到其他服务器,就需要序列话
(2)如果内存满了,需要将数据转义到虚拟内存,也需要实现序列化。

你可能感兴趣的:(Hibernate,联合主键,主键策略)