hibernate关系映射| 耗时:0.303秒|14211条结果

hibernate 映射关系-集合映射

1、集合映射简介 当持久化类中有一个值类型的集合,那么就需要一张额外的数据库表来保存这个值类型集合的数据,这张表被称为集合表。比如有一张学生表,学生可能有很多爱好,就需要一种学生爱好集合表来存储学生的爱好信息。 Hibernate支持大部分重要的JDK集合接口映射,主要有以下几种。 1.
http://www.itnose.net/detail/6300197.html 2015-06-19 10:47   [Hibernate]

hibernate映射关系

hibernate的多对一关系 ,然后通过多方表查询出了一方和多方的不同字段,现在要模糊查询 通过一方的字段,进行查询。有点懵,又想通过一对多关系的配置,一方却是主键。求大神教导。 回复讨论(解决方案)
http://www.itnose.net/detail/6676655.html 2016-12-02 22:36   [JavaWeb]

Hibernate -- 映射关联关系

Hibernate如何映射 单双向的多对一,基于外键、基于主键的一对一,以及单双向的多对多的关联关系。包括在 Intellij Idea下如何操作,以及各个类型映射下的 CRUR 以及需要注意的地方。 没有介绍 Hibernate 是如何映射继承关系,是因为在真实的生产环境下还没有遇到这种情况,这里不做说明。 文章
http://www.itnose.net/detail/6653486.html 2016-10-12 21:49   [J2SE]

Hibernate学习--映射关系

)     1、建表(Employee员工表和dpet部门表)        ①Employee类     ② 配置Employee.hbm.xml 映射文件,并在hibernate.cfg.xml文件中注
http://www.itnose.net/detail/6632151.html 2016-08-25 20:51   [J2SE]

Hibernate框架关系映射

;Hibernate关系映射二之   单向多对一关系映射 多对一关系映射也同样的好理解,比如,多个学生可以同时处于一个班级下,这就是单向的多对一的关系,所以我们就可以想到在学生表中加入一个班级属性 package entity; import java.io.Serializable
http://www.itnose.net/detail/6624097.html 2016-08-12 09:26   [Hibernate]

4.3 Hibernate关系映射

    Hibernate关系映射的主要任务是实现数据库关系表与持久化类之间的映射。 1.一对一关联     有两种实现方式:共享主键方式(使两个数据表的主键使用相同的值,通过主键形成一对一映射关系)和唯一外键方式
http://www.itnose.net/detail/6460618.html 2016-03-01 09:09   [Hibernate]

hibernate 多对多关系映射

这里有两个类,Employee和Company,他们是多对多的关系,在数据库中的表分别是 t_employee 和 t_company ,中间表的字段是e_id和c_id,分别以t_employee的主键和t_company的主键作为外键。 package 
http://www.itnose.net/detail/6381416.html 2015-10-02 22:09   [Hibernate]

Hibernate对象映射关系:多对多

;    } } 三:项目配置文件 Course.hbm.xml <?xml version="1.0"encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "
http://www.itnose.net/detail/6353420.html 2015-08-22 14:35   [Hibernate]

Hibernate many2many映射关系

多对多映射关系: 开发步骤: JavaBean 映射文件  测试 图片详解: 1.javaBean  Project.java package cn.itcast.many2many; import java.util.HashSet; import
http://www.itnose.net/detail/6328760.html 2015-07-28 10:41   [Hibernate]

Hibernate One2Many映射关系

多对一映射与一对多映射: 使用部门和员工的关系来说明问题.一个部门可以有多个员工,但是一个员工只属于一个部门. 开发步骤: (1)JavaBean的设计,Dept(部门表) Employee(员工表) (2)映射关系 (3)测试 1.Dept和Employee Javabean
http://www.itnose.net/detail/6328507.html 2015-07-28 00:29   [Hibernate]

Hibernate映射关系

前言 首先声明,这是一篇转发博客,不属于原创。但是感觉很有用,所以在本人的博客中记录下来。 Hibernate Annotation关系映射有下面几种类型: 一对一外键关联映射(单向) java@OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="userid",unique=true) /* 一对一外键关联,使用@OneToOne,并设置了级联操作。@JoinColum设置了外键的名称为userid(数据库字段名),如果不设置,则默认为另一类的属性名+ _id,外键的值是唯一的(unique)。*/ 一对一外键关联映射(双向) Class1里与上面一样,对于Class2: java@OneToOne(mappedBy="class2",cascade=CascadeType.ALL) 注意: 需要加上mappedBy="class2",如果不加上的话,Class2也会生成一个外键(class1_id),mappedby="class2"需要指向与他关联对象的一个属性,说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的,主体端负责维护联接列,对于不需要维护这种关系的从表则通过mappedBy属性进行声明,mappedBy的值指向主体的关联属性 规律:只有是双向关联关系,都加上mappedby (嵌入式对象)组件映射 将另外一个类成为实体类的一部分进行映射,举个例子,用户的教育经历完全依附于用户表,但是又有比较复杂的结构,就可以使用Embedded 注意: 成为其他实体类一部门的类不要注解为@Entity 实体类! 使用@Embedded对组件类注解。 组件属性名名为了保证不与实体类属性名冲突,可以使用如下注解: java@AttributeOverrides( { @AttributeOverride(name="xx",column=@Column(name="xxx")), @AttributeOverride(name="xx2",column=@Column(name="xxx2")), } ) 在嵌入式对象里,对其属性使用@column进行设置 下面使用一个例子结合@ElementCollection来说明 java@Entity public class User { [...] public String getLastname() { ...} @ElementCollection @CollectionTable(name="Addresses", joinColumns=@JoinColumn(name="user_id")) @AttributeOverrides({ @AttributeOverride(name="street1", column=@Column(name="fld_street")) }) public Set<Address> getAddresses() { ... } } @Embeddable public class Address { public String getStreet1() {...} [...] } //注意,Embedded对象不能再含有Collection了,同时一张表是不可避免的 一对多关联映射(单向) java@OneToMany @JoinColumn(name="orgid") /** * 一对多注解@OneToMany(单向) * 如果只写@OneToMany的话,hibernate会建一张中间表来 * 维护他们之间的关系, * 加上@JoinColumn(name="orgid"),则不会建中间表,他会在 * 多的一端加上外键orgid,来维护他们之间的关系 */ 一对多关联映射(双向) 对于一端: java@OneToMany(mappedBy="org") @JoinColumn(name="orgid") /** * 一对多双向,在一的一端中设置mappedBy * 说明多的一端为主导 * 如果指定了外键字段名称,则多的一端也需要指定相同的字段名称 */ 对于多端: java@ManyToOne @JoinColumn(name="orgid") /** * 一对多双向 * 需要指定外键与一的一端给的外键名称一致,@JoinColumn(name="orgid") * 也可以不指定,如果在多的一端不指定,则一的一端也不能指定 * 否则为生成两个外键 */ 多对一关联映射 在多的一端配置: java@ManyToOne(targetEntity=Organization.class) @JoinColumn(name="orgid") //多对一注解@ManyToOne //targetEntity指定了关联对象 //@JoinColumn(name="orgid")指定生产的外键的字段名,默认是org_id 多对多关联映射(单向) java@ManyToMany /** * 多对多映射:注解@ManyToMany(单向) * 默认情况下,hibernate会自动的创建一张中间表, * 来维护多对多关系 * 默认中间表的名称 :user_role中间表,字段的名称user_id role_id * 如果想更换表名和字段名称,注解如下: */ @JoinTable(name="t_u_r", joinColumns={@JoinColumn(name="u_id")}, inverseJoinColumns={@JoinColumn(name="r_id")} ) 多对多关联映射(双向) 举个例子Role表和User表,用户可以有多个角色,角色也可以属于多个用户 User端: java@ManyToMany /** * 多对多映射:注解@ManyToMany(单向) * 默认情况下,hibernate会自动的创建一张中间表, * 来维护多对多关系 * 默认中间表的名称 :user_role中间表,字段的名称user_id role_id * 如果想更换表名和字段名称,注解如下: */ @JoinTable(name="t_u_r", joinColumns={@JoinColumn(name="u_id")}, inverseJoinColumns={@JoinColumn(name="r_id")} ) /** * @JoinTable(name="t_u_r", * 指定中间表的表名 * joinColumns={@JoinColumn(name="u_id")}, * 指定当前对象的外键 * inverseJoinColumns={@JoinColumn(name="r_id")} * 指定关联对象的外键 */ Role端: @ManyToMany(mappedBy="role") /** * 多对多,双向关联映射 */
http://www.itnose.net/detail/6316304.html 2015-07-12 17:09   [Hibernate]

hibernate关联关系映射

    本文将介绍hibernate的几种关联关系映射:多对一、一对一、一对多、多对多。 多对一 以用户和组为例,假设多个用户对应一个组,用户即为多的一端,组即为一的一端。 关键代码和配置: 用户: public class User implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String name; private Group group; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } } <hibernate-mapping package="com.ado.test.hibernate.po"> <class name="User" table="t_user"> <id name="id" column="id" type="long"> <generator class="increment" /> </id> <property name="name" column="name" /> <!-- cascade="all" fetch="join" --> <many-to-one name="group" column="groupid" /> </class> </hibernate-mapping> 组: public class Group implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } <hibernate-mapping package="com.ado.test.hibernate.po"> <class name="Group" table="t_group"> <id name="id" column="id" type="long"> <generator class="increment" /> </id> <property name="name" column="name" /> </class> </hibernate-mapping> 一对一 以人和身份证号为例,一个人对应一个身份证号。 使用<many-to-one>实现一对一 关键代码和配置: 人: public class Person implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String name; private IdCard idCard; public Long getId() { return id; } public String getName() { return name; } public void setId(Long id) { this.id = id; } public void setName(String name) { this.name = name; } public IdCard getIdCard() { return idCard; } public void setIdCard(IdCard idCard) { this.idCard = idCard; } } <hibernate-mapping package="com.ado.test.hibernate.po.one2one"> <class name="Person" table="t_person1"> <id name="id" column="id" type="long"> <generator class="increment" /> </id> <property name="name" column="name" /> <many-to-one name="idCard" column="cardid" /> </class> </hibernate-mapping> 身份证号: public class IdCard implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String name; public Long getId() { return id; } public String getName() { return name; } public void setId(Long id) { this.id = id; } public void setName(String name) { this.name = name; } } <hibernate-mapping package="com.ado.test.hibernate.po.one2one"> <class name="IdCard" table="t_idcard"> <id name="id" column="id" type="long"> <generator class="increment" /> </id> <property name="name" column="name" /> </class> </hibernate-mapping> 使用<one-to-one>实现一对一 代码可参考上一小节内容,这里只列出关键配置: 人: <hibernate-mapping package="com.ado.test.hibernate.po.one2oneforeign"> <class name="Person" table="t_person2"> <id name="id" column="id" type="long"> <generator class="foreign"> <param name="property">idCard</param> </generator> </id> <property name="name" column="name" /> <one-to-one name="idCard" /> </class> </hibernate-mapping> 身份证号: <hibernate-mapping package="com.ado.test.hibernate.po.one2oneforeign"> <class name="IdCard" table="t_idcard2"> <id name="id" column="id" type="long"> <generator class="increment" /> </id> <property name="name" column="name" /> </class> </hibernate-mapping> 一对多 以班级和学生为例,一个班级有多个学生,即班级为一的一端,学生为多的一端。 关键代码和配置: 班级: public class Classes implements Serializable { private static final long
http://www.itnose.net/detail/6194892.html 2015-01-18 20:47   [Hibernate]

Hibernate对象关系映射(一)

Hibernate的本质是对象关系映射,ORM实现了将对象的变化保存到数据库中。以前我们对关系表操作,执行增CRUD。现在我们不在对关系表进行操作,而是直接对对象操作。对象关系映射有以下几种 基本图形 图1 一对一映射 分两种情况 主键 唯一外键 1主键  两个对象具有相同的主键,不再有额外字段维护他们的关系 图2  Person和Card之间,他们的主键是相同的 2唯一外键 其实是用来表示多对一的,如果加上唯一限制,就可以表示一对一关联   图3   图3可以看到卡号在person中充当了一个外键。 根据分类的情况,还可以更细致的划分,每个分类都对应着一种单向和双向的选择,就是图1。 认识了基本的一对一关系映射,我们在开看看他们的配置关系,重点还是在Hibernate.hbm.xml文件的配置 1.1主键单向关联 <classname="com.bjpowernode.hibernate.Person"table="t_person"> <idname="id"> <!--采用foreign生成策略,foreign会取得关联对象的标识 --> <generatorclass="foreign" > <!--property指的是关联对象。 --> <paramname="property">idCard</param> </generator> </id> <propertyname="name"/> <!--一对一关联映射,主键关联. --> <!-- one-to-one标签指示hibernate如何加载其关联对象,默认根据主键加载. 也就是拿到关系字段值,根据对端的主键来加载关联对象. constrained="true",表示当前主键(Person的主键)还是一个外键. 参照了对端的主键(IdCard的主键),也就是会生成外键约束语句. --> <one-to-onename="idCard" constrained="true"/> </class> IdCard.hbm.xml <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.IdCard" table="t_idCard"> <idname="id"> <generatorclass="native" /> </id> <propertyname="cardNo"/> </class> </hibernate-mapping> 1.2主键双向关联 因为是单向,所以只要一端进行维护。 区别是一对一双向主键关联与一对一单向主键关联的区别就是,一对一单向主键关联,在person端能看到idCard,而idCard不能看到Person端。而双向关联就是在idCard端也能看到person,也就是不但在Person.hbm.xml中加上<one-to-one>标签,同时在IdCard.hbm.xml文件中加上<one-to-one>标签。 <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.IdCard" table="t_idCard"> <id name="id"> <generator class="native"/> </id> <property name="cardNo"/> <one-to-onename="person"/> </class> </hibernate-mapping> 2.1唯一外键单向关联 一对一单向唯一外键关联,也就是多对一关联的特例,把多的一端限制为一,就是一对一唯一外键关联。同多对一一样,在一端加入另一端的并采用<many-to-one>标签,通过unique="true",这样来限制了多的一端为一。 IdCard.hbm.xml <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.IdCard" table="t_idCard"> <id name="id"> <generator class="native"/> </id> <property name="cardNo"/> </class> </hibernate-mapping> Person.hbm.xml <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.Person" table="t_person"> <id name="id"> <!-- 采用foreign生成策略,foreign会取得关联对象的标识--> <generator class="native"/> </id> <property name="name"/> <many-to-one name="idCard"unique="true"></many-to-one> </class> </hibernate-mapping> 双向关联是在在没有的一端加上就可以了。我们的IdCard.hbm.xml中采用<one-to-one>标签 小结:  综上所述,可以看出,同一类映射,无论是单向还是双向,他们的存储结构是相同的,之所以映射文件不同,是因为加载时不同(在增删改时)。如:A对B,A就是主动方,A主动想要了解B的情况,这样把B设置到A端  
http://www.itnose.net/detail/6162876.html 2014-12-01 00:07   [Hibernate]

Hibernate4.x之映射关系多对多

; 13 </property> 14 </class> 15 </hibernate-mapping>   2.双向n-n关联关系 双向n-n关联需要两端都使用集合属性 双向n-n关联必须使用连接表 集合属性应增加key子元素用以映射外键列,集合元素里
http://www.itnose.net/detail/6162441.html 2014-11-30 11:44   [J2SE]

  1  2  3  4  5 下一页>