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过时
使用下面方案来替换过时方案

猜你喜欢

转载自blog.csdn.net/qq_40208605/article/details/80733194