`

一对多和多对一双向关联

阅读更多

一个组有多个用户 一个用户只能属于一个组 在用户表里面有组的外键

 

Annotation配置:

package com.zchen.hibernate.mtootm;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="T_GROUP")
public class Group {
	private int id;
	private String name;
	
	private Set<User> users = new HashSet<User>();
	@OneToMany(mappedBy="group")
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	@Id
	@GeneratedValue
	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;
	}
	

}

 

package com.zchen.hibernate.mtootm;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="T_USER")
public class User {
	private int id;
	private String name;
	
	private Group group;
	
	@ManyToOne
	@JoinColumn(name="GROUP_ID")
	public Group getGroup() {
		return group;
	}
	public void setGroup(Group group) {
		this.group = group;
	}
	@Id
	@GeneratedValue
	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;
	}

}

 

 

Xml配置:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zchen.hibernate.mtootm">

    <class name="Group" table="T_GROUP">
        <id name="id" column="ID">
            <generator class="native">
            </generator>
        </id>
        <property name="name" column="NAME"/>
        <set name="users">
        	<key column="GROUP_ID"></key>
        	<one-to-many class="com.zchen.hibernate.mtootm.User"/>
        </set>
    </class>

</hibernate-mapping>

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zchen.hibernate.mtootm">

    <class name="User" table="T_USER">
        <id name="id" column="ID">
            <generator class="native">
            </generator>
        </id>
        <property name="name" column="NAME"/>
        <many-to-one name="group" column="GROUP_ID"></many-to-one>
    </class>

</hibernate-mapping>

 

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory name="">
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql:///db_czbk_hibernate</property>
		<property name="connection.username">root</property>
		<property name="connection.password">1234</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hbm2ddl.auto">create</property>
		<property name="current_session_context_class">thread</property>
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
		<property name="show_sql">true</property>
		
		 <mapping class="com.zchen.hibernate.mtootm.Group" />
		<mapping class="com.zchen.hibernate.mtootm.User" /> 
		
		<!-- <mapping resource="com/zchen/hibernate/mtootm/Group.hbm.xml" />
		<mapping resource="com/zchen/hibernate/mtootm/User.hbm.xml" /> -->
	</session-factory>
</hibernate-configuration>

 

package com.zchen.hibernate;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

public class Snippet {
	@Test
	public void testSchemaExport(){
			new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
	}
}

 

分享到:
评论

相关推荐

    Hibernate ORM - 一对多双向关联关系

    描述部分为空,但我们可以根据标题推测,这篇博客可能详细解释了如何在Hibernate中配置和管理这种一对多双向关联,包括XML配置、注解方式,以及如何在代码中进行操作和查询。 **Hibernate ORM简介** Hibernate是一...

    hibernate一对多,多对一,一对多双向关联

    在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户(多对一),而一个商品可以被多个订单购买,同时一个订单也可以包含多个商品(一对多双向关联)。这个标题暗示...

    mybatis系列三:一对多双向关联

    总之,MyBatis的一对多双向关联提供了丰富的数据模型映射能力,使得在Java对象和数据库表之间建立复杂关系变得更加容易。通过合理配置映射文件和Java实体,以及充分利用MyBatis提供的工具,可以高效地管理这些关联...

    JPA_2_一对多双向关联关系

    **JPA 2 一对多双向关联关系** Java Persistence API(JPA)是Java平台上的一个标准,用于处理对象关系映射(ORM),使得开发者可以使用面向对象的方式操作数据库。在JPA中,一对多关联关系是常见的实体间关系类型...

    Hibernate一对多双向自身关联demo代码

    在这个“Hibernate一对多双向自身关联demo代码”中,我们将深入理解如何实现一个实体类与其自身进行一对多的双向关联。这种关联在实际应用中常见于例如用户的朋友关系、员工的上下级关系等场景。 首先,让我们了解...

    Hibernate一对一主键关联映射(双向关联)

    标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来建立关联。"双向关联"则意味着在两个实体类中,都可以直接访问到对方的实例,即在实体A中有一个对实体B的引用,...

    hibernate双向一对多关联映射(注解版)

    在Java的持久化框架Hibernate中,双向一对...理解并正确实现双向一对多关联映射对于优化数据访问性能和简化代码结构至关重要。在实际项目中,根据业务需求选择合适的映射策略和级联类型,可以有效提高程序的运行效率。

    JPA中的一对多双向关联与级联操作

    这篇博客将深入探讨JPA中的一对多双向关联以及级联操作。 首先,让我们理解一对多关联。假设我们有两个实体,一个是`User`(用户)和一个是`Post`(帖子)。一个用户可以发布多个帖子,但一个帖子只能属于一个用户...

    Hibernate双向一对一关联映射(注解版)

    在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有另一个实体的引用,而双向一对一映射则意味着两个实体都可以互相引用。这种关联关系在数据库层面通常通过主键外键约束来实现,但...

    多对多双向关联

    在编程领域,尤其是在Java或Spring框架中,"多对多双向关联"是一个常见的数据库关系映射概念。在数据库设计中,关系模型允许实体之间存在多种联系,而多对多关联是最复杂也是最灵活的一种关系类型。它表示一个实体...

    hibernate多对多双向关联

    该描述提供了一个博客链接,虽然没有直接给出具体内容,但我们可以假设博客内容会详细解释如何在Hibernate中设置和管理多对多双向关联。这通常包括配置实体类、定义关联映射、使用中间表以及进行增删改查操作。在...

    多对一双向关联(视频)

    通过学习和掌握多对一和一对多双向关联,开发者可以更好地设计和实现复杂的数据库模型,并有效地使用ORM工具将这些模型映射到实际的数据库操作中。理解这些关联的概念对于开发高效、可维护的Java应用至关重要。

    Hibernate Annotation 基于外键的一对多双向关联

    在实现基于外键的一对多双向关联时,理解注解的含义和作用至关重要,同时还需要考虑性能优化和潜在的问题,确保数据的正确性和一致性。通过阅读源码和实践,我们可以更深入地掌握Hibernate的内在机制。

    13_jpa多对多双向关联实体定义与注解

    在Java世界中,Java Persistence API(JPA)是Oracle公司推出的用于...通过"13_传智播客JPA详解_JPA中的多对多双向关联实体定义与注解设置"的学习,开发者可以更好地应用这些概念,提升代码质量和数据库操作的灵活性。

    多对一双向关联关系实现源码

    本篇文章将详细讲解如何在Hibernate中实现多对一双向关联关系,并通过源码分析加深理解。 多对一关联关系是指在数据库中,一个实体(表)可以与多个其他实体(表)相关联,而另一个实体则对应于前者的多个实例。...

    JPA中的多对多双向关联实体定义与注解设置

    总结来说,JPA中的多对多双向关联实体定义涉及`@ManyToMany`、`@JoinTable`以及`mappedBy`等注解的使用。正确配置这些注解可以让我们轻松地管理实体之间的复杂关系,并简化数据库操作。在实际项目中,理解并熟练掌握...

    hibernate双向一对多关联映射(XML)

    总结起来,Hibernate的双向一对多关联映射(XML)涉及的主要知识点包括:实体类的关联、`&lt;set&gt;`和`&lt;one-to-many&gt;`标签的使用、`&lt;many-to-one&gt;`标签的使用、以及如何在Java代码中维护这种关联。理解并熟练运用这些...

    hibernate一对多关联映射(双向关联)

    总之,理解并正确实现Hibernate中的一对多双向关联映射是提升应用程序性能和数据一致性的重要步骤。通过细心配置映射文件,编写相应的实体类,以及妥善处理关联关系的维护,我们可以有效地管理复杂的数据结构。

Global site tag (gtag.js) - Google Analytics