|
【郑州校区】Hibernate注解开发 在hibernate中我们使用注解,可以帮助我们简化hbm文件配置。 1.1. PO类注解配置@Entity 声明一个实体 @Table来描述类与表对应 @Id来声明一个主键 @GenerateValue 用它来声明一个主键生成策略 默认情况下相当于native 可以选择的主键生成策略 AUTO IDENTITY SEQUENCE @Column来定义列 注意:对于PO类中所有属性,如果你不写注解,默认情况下也会在表中生成对应的列。 列的名称就是属性的名称 @Temporal来声明日期类型 可以选择 TemporalType.DATA 只有年月日 TemporalType.TIME 只有小时分钟秒 TemporalType.TIMESTAMP 有年月日小时分钟秒 我们最终需要在hibernate.cfg.xml文件中将我们类中的注解配置引用生效 问题:1.如果我们主键生成策略想使用UUID类型? 问题2:如果设定类的属性不在表中映射? 对于我们以上讲解的关于属性配置的注解,我们也可以在其对应的getXxx方法去使用 1.2. 一对多(多对一)@OneToMany @ManyToOne 以Customer与Order为例 Customer类 Order类 示例:保存客户时,保存订单 对于这个示例我们需要在Customer中配置cascade操作,save-update 第一种方式,可以使用JPA提供的注解 第二种方式:可以使用hibernate提供的注解 以下是示例代码 执行后的结果
订单中没有关联客户的id,为什么? 原因:我们在Customer中配置了mappedBy=”c”它代表的是外键的维护由Order方来维护,而Customer不维护,这时你在保存客户时,级联保存订单,是可以的,但是不能维护外键,所以,我们必须在代码中添加订单与客户关系。 扩展:关于hibernate注解@Cascade中的DELETE_ORPHAN过时 使用下面方案来替换过时方案 传智播客·黑马程序员郑州校区地址 河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层 联系电话 0371-56061160/61/62 来校路线 地铁一号线梧桐街站A口出
|