终于要说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就代表这个方法的返回值是被维护方。可以看看
的最后2句话。
这里,hib的配置方面我想该告一段落了。应该有点其他的东西了。
分享到:
相关推荐
这篇博文将带你了解如何使用Hibernate Annotation进行开发。 首先,我们需要理解Java注解的基本概念。注解是一种元数据,它提供了在编译时或运行时处理类、方法和属性的能力。在Hibernate中,注解用于声明实体类...
Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即“阻抗不匹配”。通过Hibernate,开发者可以使用面向对象的方式来操作数据库,而无需关心底层的...
hibernate是Java开发中的一款流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在"5天入门hibernate"的学习计划中,你将深入理解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. 第...
3. Annotation配置:相比于XML配置,使用Java注解可以更简洁地定义实体类和映射关系。 4. Mapping:对象到表的映射,包括一对一、一对多、多对一和多对多的关系映射。 5. Cascade:级联操作允许在一个实体的保存、...
Hibernate是Java领域中一个非常流行的持久化框架,它通过提供对象关系映射(ORM)来简化数据库编程。通过Hibernate,开发者可以使用Java对象操作数据库,而无需编写大量的SQL代码。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. 第...
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. 第...
5. **映射文件(Mapping File)**: `.hbm.xml`文件用于定义实体类与数据库表之间的映射关系,也可以使用注解方式(Annotation)来完成映射。 三、Hibernate配置 在使用Hibernate之前,需要进行一些基本的配置,包括...
**Annotation映射** 随着Java注解的流行,Hibernate也支持使用注解来代替XML进行映射。在`HbmUser`类中,我们可以看到如下注解: ```java @Entity @Table(name = "USER") public class HbmUser { @Id @...
第8课深入解释了O/RMapping(对象关系映射)的概念,包括其定义、Hibernate的创始人、作用、存在的原因,以及优缺点。O/RMapping是Hibernate的核心,它使得Java对象可以直接映射到数据库表,简化了数据操作。 第9课...
#### 一、HelloWorld与Hibernate入门 - **HelloWorld实践**:初学者应从创建一个简单的Java项目开始,名为`hibernate_0100_HelloWorld`,在此项目中引入`User-library-hibernate`,包含所有必要的jar包,并集成MySQL...
本文将详细阐述Hibernate Validator的使用方法、验证机制、自定义约束以及通过XML配置验证器的实例和最佳实践。 ### Hibernate Validator基础 Hibernate Validator 5.1.3版本的参考文档主要分为以下几个部分: ##...
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. 第...
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学习笔记——Java与Hibernate入门精要 #### 一、Java学习笔记概述 本学习笔记旨在帮助初学者系统地掌握Java语言的基础知识,并通过实际案例深入理解Hibernate框架的应用。通过对核心概念和技术点的详细解释...
**Hibernate 程序入门详解** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互。在这个教程中,我们将学习如何创建第一个 Hibernate 程序,采用 Annotation 版本,也...
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. 第...
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. 第...