Hibernate 的一些注解配置

  网上参考资料很多,但总是不符合自身习惯,遂记录下来。

一对多的关系

  如class与student的关系

  class中

@OneToMany(mappedBy = "class") 
@LazyCollection(LazyCollectionOption.EXTRA)
@Cascade(value = {CascadeType.ALL})
private set<Student> students = new HashSet<Student>();

  @OnetoMany 关系申明,一个class对应多个学生,配置mappedby的为由多的一方(class)来维护关联关系,如班级不在了,学生肯定不在了。(如果没有配置谁来维护,系统会给我们创建一张中间表,可以验证)

  @LazyCollection(LazyCollectionOption.EXTRA)  --->  LazyCollection属性设置成EXTRA指定了当如果查询数据的个数时候,只会发出一条 count(*)的语句,提高性能

  @Cascade 为配置何时进行关联操作,具体的一些取值如下

all: 所有情况下均进行关联操作,即save-update和delete。     
none: 所有情况下均不进行关联操作。这是默认值。      
save-update: 在执行save/update/saveOrUpdate时进行关联操作。      
delete: 在执行delete 时进行关联操作。      
all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。
比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,
此book即成为孤儿节点。

  注:在声明多的一方时要及时初始化

  student中

 @ManyToOne(fetch = FetchType.LAZY)
private Clazz clazz;

  @ManyToOne 声明多对一关系,fetch表示延迟加载,就是在查询class时,不会立即就把学生查找出来。

  注:1的一方不能初始化。

其他多对多,一对一有机会用到更新

  

原文地址:https://www.cnblogs.com/yanyouqiang/p/7125291.html