hibernate中注解方式中的控制反转

都知道hibernate用xml方式配置关系时(one-to-many,many-to-many)可以添加控制反转属性 inverse=false(默认)

即将两表之间的关系交给对方来维护.

inverse=true表示本方不维护关系,有对方维护关系

但是需注意的是,one-to-one关系是没有控制反转的,只能交由外键来维护关系.

从而导致在设置关系时,只能有外键方设置,移除关系时,只能从外键方来解除关系,删除记录时,只能先删外键方,在删主键方(save,remove,delete)

如果有控制反转的话,就方便的多,两表之间可以互相设置关系,互相解除关系,删除时,删除主键方时,会将外键方的外键置为空值()不过这样不推荐)

那么在hiebernate注解方式下(在没有xml配置的情况下)是如何设置控制反转的,如何在onetoMany ,manytomany中相互设置关联了?

当然inverse对get/query没有任何影响

一般控制反转(维护关系)都交给多方(外建方)来维护,学生记教室容易,教室记学生麻烦

原则:

1.one-to-one不添加控制反转,由外键维护关系

2.由多方维护关系,

主表方不维护主键关系

<set name="employees" inverse="true">
<key column="departmentId"></key>
<one-to-many class="Employee"/>
</set>

子表方(外键方) many to one不设置inverse属性(默认为inverse=false)  你写了反倒会出错  同理在annotation中many to one也不能写mappedBy (默认都是由对方控制的)

在one-to-one 双向关联中 外键方维护关系

@JoinColumn(name=" ",unique=".")  //设置外键 inverse=false

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="pid",unique=true)
public IdCard getIdCard() {
return idCard;
}

主键方mappedBy="子表外键对象" //inverse=true

many-to-many  有一方维护外键关系就行了

因此设置了一方关系 另一方@ManyToMany()不设置mappedBy就可以互相维护关系(但是不推荐)

mappedBy ===inverse=true

many-to-one 不写

时间: 2024-12-28 01:27:34

hibernate中注解方式中的控制反转的相关文章

hibernate annotation注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

在ssh框架中注解方式需要注意的几个问题

1.注解方式的时候 Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法. 需要注意的是有多少个类成员对象就要实现多少次装配! @Autowired private LineDAO linedao; @Autowired private LineManagerDAO linemdao; @Autowired private TicketDAO tdao; //票价的

2.2、Hibernate用注解方式实现一对多、多对多关系

一.一对多关系 1.在上一篇日志中用.xml配置文件项目基础上,再往lib目录先添加一个包-hibernate-jpa-2.0-api-1.0.0.Final.jar 2.新建一个com.st.bean4 包,往包里面添加两个含有注解的类: a).DeptBean2类: 1 package com.st.bean4; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 7 import javax.persistence.Colum

Hibernate基于注解方式的各种映射全面总结

1. 使用Hibernate Annotation来做对象关系映射 1) 添加必须包: hibernate-jpa-2.0-api-1.0.0.Final.jar 2) 在实体类中添加JPA的标准注解来进行对象关系映射.注解可以添加在属性上,也可以添加在getXxx()方法之上. a) @Entity 映射一个实体类 @Table 指定关联的表 b) @Id 映射OID c) @GeneratedValue 指定OID的生成策略 d) @Version 映射版本号属性 e) @Column 指定

hibernate 用注解方式生成uuid方法

//配置uuid,本来jpa是不支持uuid的,但借用hibernate的方法可以实现. @GeneratedValue(generator = "uuid") @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid") 加在id的get方法上面 下面具体操作下: 1.同样的 先新建一个java project.

038 使用shiro的方法注解方式进行权限控制 - bos

1.在Spring的配置文件中开启shiro的注解支持 <!-- 开启shiro框架注解支持 --> <bean id="defaultAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> <!-- 表示必须使用cglib方式为Action创建动态代理对象 --> &l

Hibernate @Formula 注解方式

1.Formula的作用 Formula的作用就是用一个查询语句动态的生成一个类的属性 就是一条select count(*)...构成的虚拟列,而不是存储在数据库里的一个字段.用比较标准的说法就是:有时候,你想让数据库,而非JVM,来替你完成一些计算,也可能想创建某种虚拟列,你可以使用sql片段,而不是将属性映射(物理)列.这种属性是只读的(属性值由公式求得).Formula甚至可以包含sql子查询 2.Formula的使用 package aa; import static javax.pe

hibernate注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

控制反转(IoC)与依赖注入(DI)

前言 最近在学习Spring框架,它的核心就是IoC容器.要掌握Spring框架,就必须要理解控制反转的思想以及依赖注入的实现方式.下面,我们将围绕下面几个问题来探讨控制反转与依赖注入的关系以及在Spring中如何应用. 什么是控制反转? 什么是依赖注入? 它们之间有什么关系? 如何在Spring框架中应用依赖注入? 什么是控制反转 在讨论控制反转之前,我们先来看看软件系统中耦合的对象.图1:软件系统中耦合的对象从图中可以看到,软件中的对象就像齿轮一样,协同工作,但是互相耦合,一个零件不能正常工