`
周一Monday
  • 浏览: 346288 次
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate4一对多关系映射

阅读更多

示例:一个类别(Category)下面有多个商品(Product),多个商品对应对应同一类别

 

public class Category {

       private Integer id;
	private String name;
	private Set<Product> products = new HashSet<Product>();

	// getter and setter
}	

 

public class Product {

	private Integer id;
	private String name;
	private Double price;
	private Category category;
	
	// getter and setter
}

用XML映射

<hibernate-mapping package="org.monday.hibernate4.domain">
	<class name="Category" table="tbl_category">
		<id name="id">
			<generator class="identity" />
		</id>
		<property name="name" />
		<set name="products" inverse="true">
			<key column="category_id" />
			<one-to-many class="Product" />
		</set>
	</class>
</hibernate-mapping>

 

<hibernate-mapping package="org.monday.hibernate4.domain">
	<class name="Product" table="tbl_product">
		<id name="id">
			<generator class="identity" />
		</id>
		<property name="name" />
		<property name="price" />
		<many-to-one name="category" class="Category" 
			column="category_id" not-null="true"/>
	</class>
</hibernate-mapping>

 用@Annotation映射

@Entity
@Table(name = "tbl_category")
public class Category {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	private String name;
        // 使用泛型的话,targetEntity可以不制定
	@OneToMany(mappedBy = "category")
	private Set<Product> products = new HashSet<Product>();

	// getter and setter	
}	

 

@Entity
@Table(name = "tbl_product")
public class Product {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	private String name;
	private Double price;

	@ManyToOne
	@JoinColumn(name = "category_id", nullable = false)
	private Category category;

	// getter and setter	
}	

 测试代码

Product p = new Product();
p.setName("hibernate");
p.setPrice(99.9);

Category c = new Category();
c.setName("book");
c.getProducts().add(p);

p.setCategory(c);

session.save(c); // 先插入一的一方
session.save(p);

  SQL schema

Hibernate: 
    create table tbl_category (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )
Hibernate: 
    create table tbl_product (
        id integer not null auto_increment,
        name varchar(255),
        price double precision,
        category_id integer,
        primary key (id)
    )
Hibernate: 
    alter table tbl_product 
        add index FK2BA956E5535EE4C (category_id), 
        add constraint FK2BA956E5535EE4C 
        foreign key (category_id) 
        references tbl_category (id)
Hibernate: 
    insert 
    into
        tbl_category
        (name) 
    values
        (?)
Hibernate: 
    insert 
    into
        tbl_product
        (name, price, category_id) 
    values
        (?, ?, ?)
 
分享到:
评论

相关推荐

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

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    hibernate(多对多关系映射)

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系映射是一种常见的数据库交互模式,它用于表示两个实体之间复杂的关系。在这个场景中,一个实体可以与多个其他实体相关联,反之亦然。例如,在学生和课程...

    hibernate 映射关系学习入门 多对多实体映射

    二、多对多映射关系 在关系数据库中,多对多关系是指两个表之间存在多个对应关系。例如,学生可以选修多门课程,而课程也可以被多名学生选修。在Hibernate中,多对多关系通过中间表(也称为联接表或关联表)来实现,...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    Hibernate映射一对多关联关系

    ### Hibernate映射一对多关联关系 #### 知识点概览 - **概念解析**:一对多(One-to-Many)关联关系的概念及其在Hibernate中的实现方式。 - **域模型设计**:创建具有一个实体与多个实体关联的域模型。 - **关系...

    hibernate 一对多多对一的映射

    在Hibernate中,可以通过以下方式实现一对多映射: 1. **配置文件映射**:在Hibernate的配置文件(如`hibernate.cfg.xml`)中,声明两个实体类对应的数据库表,并设置关联关系。 2. **实体类定义**:在Java实体类中...

    hibernate(一对多,多对一映射)操作

    1. 一对多映射(One-to-Many): 在这种关系中,一个实体(父实体)可以与多个其他实体(子实体)相关联。在Hibernate中,我们通常使用`@OneToMany`注解来表示这种关系。例如,一个学生可以有多个课程,而一门课程...

    hibernate学习入门一对多实体映射源码

    在理解了一对多映射后,我们可以通过Hibernate API来处理这种关系: 1. 插入数据时,先创建父实体,然后在子实体中设置父实体的引用,最后保存子实体。Hibernate会自动处理外键的插入。 2. 查询时,可以从父实体...

    hibernate 单向多对多关联映射练习

    本练习主要关注的是Hibernate中的单向多对多关联映射,这是一种常见的关系数据库设计模式,用于表示两个实体间复杂的关系。 在多对多关联中,两个实体类可以相互拥有多个实例,但只在一个方向上建立关联。例如,...

    Hibernate对象关系映射

    Hibernate对象关系映射一对多 很基础等文档

    Hibernate单向一对多关联映射(XML版)

    在本主题"Hibernate单向一对多关联映射(XML版)"中,我们将深入探讨如何使用XML配置来实现数据库中一个实体类对应多个实体类的关联关系。 在Hibernate中,一对多关联是一种常见的关系映射类型,它反映了数据库中的...

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

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系映射方式,它模拟了数据库中的外键关联,使得一个实体可以拥有多个另一个实体的实例。在这个注解版的实现中,我们将深入探讨如何使用Hibernate的...

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

    在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    本篇文章将深入探讨Hibernate中的一对多和多对多关系映射。 首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

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

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系数据库模型与对象模型之间的映射方式。这种映射允许在一个实体类中存在多个另一个实体类的实例,而在另一个实体类中也可能存在对第一个实体类的...

    hibernate单向多对多映射(XML版)

    总结起来,Hibernate的单向多对多映射通过XML配置文件定义了实体之间的关系,使得在Java代码中处理数据库的多对多关联变得更加简单和直观。理解和熟练掌握这一映射方式,对于提升Java持久层开发的效率和质量至关重要...

Global site tag (gtag.js) - Google Analytics