hibernate之实体@onetomany和@manytoone双向注解

hibernate大家想必已经很熟悉,现在的注解太流行了,我就说下注解的作用。

下面是User类:

@onetomany

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@Entity
@Table (name= "user" )
public class User implements Serializable{
 
     
     private static final long serialVersionUID = 6177417450707400228L;
     
     @Id
     @GeneratedValue (strategy = GenerationType.AUTO)
         @Column (name= "id" )
     private int id;
     
     @Column (name= "name" )
     private String name;
     
     @Column (name= "password" )
         private String password;
     
     /*
      * cascade:为级联操作,里面有级联保存,级联删除等,all为所有
      * fetch:加载类型,有lazy和eager二种,
      *   eager为急加载,意为立即加载,在类加载时就加载,lazy为慢加载,第一次调用的时候再加载,由于数据量太大,onetomany一般为lazy
      * mappedBy:这个为manytoone中的对象名,这个不要变哦
      * Set<role>:这个类型有两种,一种为list另一种为set
      *
      *
      */
     @OneToMany (cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy= "user" )
     private Set<role> setRole;
     
     public int getId() {
         return id;
     }
 
     public void setId( int id) {
         this .id = id;
     }
     
     public String getName() {
         return name;
     }
 
     public void setName(String name) {
         this .name = name;
     }
 
     public String getPassword() {
         return password;
     }
 
     public void setPassword(String password) {
         this .password = password;
     }
 
     public Set<role> getSetRole() {
         return setRole;
     }
 
     public void setSetRole(Set<role> setRole) {
         this .setRole = setRole;
     }
     
}
</role></role></role></role>
@manytoone

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@Entity
@Table (name= "role" )
public class Role {
     
     
     private static final long serialVersionUID = 6177417450707400228L;  
     
     @Id
     @GeneratedValue (strategy = GenerationType.AUTO)
     @Column (name= "role_id" )
     private int role_id;
     
     @Column (name= "role_name" )
     private String role_name;
     
     @ManyToOne (cascade=CascadeType.ALL,fetch=FetchType.EAGER)
     @JoinColumn (name= "user_id" ) //加入一列作为外键
     private User user;
     
     public int getRole_id() {
         return role_id;
     }
     public void setRole_id( int role_id) {
         this .role_id = role_id;
     }
     
     public String getRole_name() {
         return role_name;
     }
     public void setRole_name(String role_name) {
         this .role_name = role_name;
     }
     
     public User getUser() {
         return user;
     }
     public void setUser(User user) {
         this .user = user;
     }
 
}
有了这二个注解,我们不需要建表,hibernate会为我们自动建立表以及各种表级联系

其中@table为映射表名,@column为映射列名,其他的我不一一细说了。
下面就是操作了,定义了级联操作,下面是保存的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public Role save() {
         User user= new User();
         user.setName( "123456" );
         user.setPassword( "123456" );
                 
         Role role= new Role();
         role.setRole_name( "student" );
         role.setUser(user);
         
         Role roler=registerDao.save(role);
         
         return roler;
     }

### 回答1: @onetomany和@manytooneHibernate框架中的注解,用于描述实体类之间的关系。 @onetomany表示一对多的关系,即一个实体类对应多个另一个实体类的对象。例如,一个班级对应多个学生,可以使用@onetomany注解来描述这种关系。 @manytoone表示多对一的关系,即多个实体类对应一个另一个实体类的对象。例如,多个订单对应一个客户,可以使用@manytoone注解来描述这种关系。 ### 回答2: @onetomany和@manytoone是数据库中两种常见的关系映射,用来描述表与表之间的关系。其中,@onetomany表示一个实体与多个实体的关系,@manytoone表示多个实体与一个实体的关系。 @onetomany关系映射可以理解为“一对多”的关系,也就是说一个表中的记录可以对应到另一个表中的多条记录。比如说,一个学院可以有多个专业,那么学院表和专业表之间就可以使用@onetomany来描述这种关系。在实际操作中,通常会在多的那一方定义一个外键,用来关联到“一”的那一方的主键上。 @manytoone关系映射则可以理解为“多对一”的关系,也就是说多个表中的记录可以对应到另一个表中的同一条记录。比如说,多个学生可以属于同一个班级,那么学生表和班级表之间就可以使用@manytoone来描述这种关系。在实际操作中,通常会在“多”那一方定义一个外键,用来关联到“一”的那一方的主键上。 需要注意的是,@onetomany和@manytoone只是关系映射的一种方式,在实际应用中还需要根据具体情况来选择适合的方式。此外,在使用时还需要注意关系的维护和数据的一致性,避免出现关系错乱或者数据冗余等问题。 ### 回答3: @onetomany和@manytoone是两种不同的映射关系,通常应用于关系型数据库中的表之间的联系。 @onetomany指的是一对多的关系,也就是说,一个实体(或对象)与另一个实体(或对象)之间存在一对多的关联关系。在关系型数据库中,这种关系通常通过外键来实现,也就是在多的一端(子表)中添加一列,该列保存着主表的主键,从而实现与主表的关联。应用程序中查询多的一端时,可以通过ORM框架将查询结果映射到对应的实体对象中,从而方便进行数据操作和处理。 @manytoone则与@onetomany相反,它指的是多对一的关系。在关系型数据库中,这种关系通常通过在多的一端(子表)中添加外键来实现。应用程序中,查询的结果和处理都与@onetomany类似。 这两种映射关系在企业级开发中非常常见,经常被用于开发各种业务系统。例如,在一个订单管理系统中,一个客户可以对应多个订单,这就是一个@onetomany的关系。而一个订单只能对应一个客户,这就是一个@manytoone的关系。只有深入理解这两种关系的含义和使用方法,才能在实际开发中灵活运用ORM框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值