`
RyanPoy
  • 浏览: 51237 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

hibernate入门使用系列 8-- annotation关系映射篇(下)

阅读更多

终于要说ManyToMany了

场景:Product和Customer。

 

先看TestProduct.java

package net.paoding.forum.domain;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;

@Entity
public class TestProduct
{
    private String             id;
    private String             name;
    private float              price;
    private List<TestCustomer> customers = new ArrayList<TestCustomer>();

    /**
     * @return the id
     */
    @Id
    public String getId()
    {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id)
    {
        this.id = id;
    }

    /**
     * @return the name
     */
    public String getName()
    {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name)
    {
        this.name = name;
    }

    /**
     * @return the price
     */
    public float getPrice()
    {
        return price;
    }

    /**
     * @param price the price to set
     */
    public void setPrice(float price)
    {
        this.price = price;
    }

    /**
     * @return the customers
     */
    @ManyToMany
    public List<TestCustomer> getCustomers()
    {
        return customers;
    }

    /**
     * @param customers the customers to set
     */
    public void setCustomers(List<TestCustomer> customers)
    {
        this.customers = customers;
    }

}

 注意这里的ManyToMany什么都没有写。

 

再看TestCustomer.java

package net.paoding.forum.domain;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;

@Entity
public class TestCustomer
{
    private String            id;
    private String            tel;
    private List<TestProduct> products = new ArrayList<TestProduct>();

    /**
     * @return the id
     */
    @Id
    public String getId()
    {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id)
    {
        this.id = id;
    }

    /**
     * @return the tel
     */
    public String getTel()
    {
        return tel;
    }

    /**
     * @param tel the tel to set
     */
    public void setTel(String tel)
    {
        this.tel = tel;
    }

    /**
     * @return the products
     */
    @ManyToMany(mappedBy = "customers")
    public List<TestProduct> getProducts()
    {
        return products;
    }

    /**
     * @param products the products to set
     */
    public void setProducts(List<TestProduct> products)
    {
        this.products = products;
    }
}

 

这里的ManyToMany我写了mappedBy这个attribute。

 

然后看hib产生的sql:

drop table test_customer cascade constraints;
drop table test_product cascade constraints;
drop table test_product_customers cascade constraints;

create table test_customer (
        id varchar2(255 char) not null,
        tel varchar2(255 char),
        primary key (id)
);

create table test_product (
    id varchar2(255 char) not null,
    price float not null,
    name varchar2(255 char),
    primary key (id)
);

create table test_product_customers (
    products_id varchar2(255 char) not null,
    customers_id varchar2(255 char) not null
);
 

ok! 非常好。hib终于在ManyToMany上没有犯白痴了。

 

上面强调了mappedBy这个属性。其实,在annotation 系列中。都有提到mappedBy这个东西。只是,我没有说到底是什么意思。其实很简单:这个东西就相当于xml配置中的inverse。写了mappedBy就代表这个方法的返回值是被维护方。可以看看

hibernate入门使用系列 6-- annotation关系映射篇(上)

的最后2句话。

 

这里,hib的配置方面我想该告一段落了。应该有点其他的东西了。

 

分享到:
评论

相关推荐

    Hibernate Annotation入门

    这篇博文将带你了解如何使用Hibernate Annotation进行开发。 首先,我们需要理解Java注解的基本概念。注解是一种元数据,它提供了在编译时或运行时处理类、方法和属性的能力。在Hibernate中,注解用于声明实体类...

    Hibernate学习笔记(1-13)

    Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即“阻抗不匹配”。通过Hibernate,开发者可以使用面向对象的方式来操作数据库,而无需关心底层的...

    5天入门hibernate

    hibernate是Java开发中的一款流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在"5天入门hibernate"的学习计划中,你将深入理解hibernate的核心概念和基本...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    hibernate初学者很好的资料

    3. Annotation配置:相比于XML配置,使用Java注解可以更简洁地定义实体类和映射关系。 4. Mapping:对象到表的映射,包括一对一、一对多、多对一和多对多的关系映射。 5. Cascade:级联操作允许在一个实体的保存、...

    hibernate的知识总结

    Hibernate是Java领域中一个非常流行的持久化框架,它通过提供对象关系映射(ORM)来简化数据库编程。通过Hibernate,开发者可以使用Java对象操作数据库,而无需编写大量的SQL代码。Hibernate的知识点非常广泛,下面...

    HibernateAPI中文版.chm

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    hibernate3.2中文文档(chm格式)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    hibernate入门教程

    5. **映射文件(Mapping File)**: `.hbm.xml`文件用于定义实体类与数据库表之间的映射关系,也可以使用注解方式(Annotation)来完成映射。 三、Hibernate配置 在使用Hibernate之前,需要进行一些基本的配置,包括...

    Hibernate O/R Mapping 入门工程包

    **Annotation映射** 随着Java注解的流行,Hibernate也支持使用注解来代替XML进行映射。在`HbmUser`类中,我们可以看到如下注解: ```java @Entity @Table(name = "USER") public class HbmUser { @Id @...

    马士兵hibernate笔记

    第8课深入解释了O/RMapping(对象关系映射)的概念,包括其定义、Hibernate的创始人、作用、存在的原因,以及优缺点。O/RMapping是Hibernate的核心,它使得Java对象可以直接映射到数据库表,简化了数据操作。 第9课...

    hibernate学习笔记

    #### 一、HelloWorld与Hibernate入门 - **HelloWorld实践**:初学者应从创建一个简单的Java项目开始,名为`hibernate_0100_HelloWorld`,在此项目中引入`User-library-hibernate`,包含所有必要的jar包,并集成MySQL...

    hibernate_validator_reference_5.1.3.pdf

    本文将详细阐述Hibernate Validator的使用方法、验证机制、自定义约束以及通过XML配置验证器的实例和最佳实践。 ### Hibernate Validator基础 Hibernate Validator 5.1.3版本的参考文档主要分为以下几个部分: ##...

    Hibernate+中文文档

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    Hibernate中文详细学习文档

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    java学习笔记(文字整理版).doc

    ### Java学习笔记——Java与Hibernate入门精要 #### 一、Java学习笔记概述 本学习笔记旨在帮助初学者系统地掌握Java语言的基础知识,并通过实际案例深入理解Hibernate框架的应用。通过对核心概念和技术点的详细解释...

    hibernate程序

    **Hibernate 程序入门详解** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互。在这个教程中,我们将学习如何创建第一个 Hibernate 程序,采用 Annotation 版本,也...

    Hibernate 中文 html 帮助文档

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    hibernate 体系结构与配置 参考文档(html)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

Global site tag (gtag.js) - Google Analytics