`
seara
  • 浏览: 648867 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

eclipse + JBoss 5 + EJB3开发指南(9):实现Entity Bean的多对多(many-to-many)映射

阅读更多
本文为原创,如需转载,请注明作者和出处,谢谢!

上一篇:eclipse + JBoss 5 + EJB3开发指南(8):实现Entity Bean的一对多(one-to-many)映射

在EJB3中需要使用@ManyToMany对封装多对多关系的字段或getter方法进行注释。先看看下面的表:
图1 t_addresses表

t_addresses表和t_customers表是多对多的关系。需要使用一个关联表来描述这种关系,关联表的结构如下图所示。
图2 t_customers_addresses
在Customer类中定义一个Collection<Address>类型的字段(addresses),用于保存与该Customer对象相对应的多个Address对象,代码如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packageentity;

importjava.util.Collection;

importjavax.persistence.CascadeType;
importjavax.persistence.Entity;
importjavax.persistence.FetchType;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.JoinTable;
importjavax.persistence.ManyToMany;
importjavax.persistence.OneToMany;
importjavax.persistence.OneToOne;
importjavax.persistence.PrimaryKeyJoinColumn;
importjavax.persistence.Table;

@Entity
@Table(name
="t_customers")
publicclassCustomer
{
privateintid;
privateStringname;
privateRefereereferee;
privateCollection<Order>orders;

privateCollection<Address>addresses;

@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
@JoinTable(name
="t_customers_addresses",joinColumns=@JoinColumn(name="customer_id",
referencedColumnName
="id"),inverseJoinColumns=@JoinColumn(name="address_id",referencedColumnName="id"))
publicCollection<Address>getAddresses()
{
returnaddresses;
}

... ...

}

@JoinTable注释用于指定连接表和t_customers及t_addresses表的连接字段关系。
Address类的代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packageentity;

importjava.util.Collection;

importjavax.persistence.CascadeType;
importjavax.persistence.Entity;
importjavax.persistence.FetchType;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.ManyToMany;
importjavax.persistence.Table;
@Entity
@Table(name
="t_addresses")
publicclassAddress
{
privateintid;
privateStringaddressLine;
privateStringcountry;
privateStringpostCode;
privateCollection<Customer>customers;
@Id
@GeneratedValue(strategy
=GenerationType.IDENTITY)
publicintgetId()
{
returnid;
}
publicvoidsetId(intid)
{
this.id=id;
}
publicStringgetAddressLine()
{
returnaddressLine;
}
publicvoidsetAddressLine(StringaddressLine)
{
this.addressLine=addressLine;
}
publicStringgetCountry()
{
returncountry;
}
publicvoidsetCountry(Stringcountry)
{
this.country=country;
}
publicStringgetPostCode()
{
returnpostCode;
}
publicvoidsetPostCode(StringpostCode)
{
this.postCode=postCode;
}
@ManyToMany(mappedBy
="addresses")
publicCollection<Customer>getCustomers()
{
returncustomers;
}
publicvoidsetCustomers(Collection<Customer>customers)
{
this.customers=customers;
}
}

由于是多对多的关系,因此,在Address类中需要定义一个Collection<Customer>类型的字段(customers)用来保存与该Address对象相对应的Customer对象。getCustomers方法也需要使用@ManyToMany进行注释。可以使用下面代码进行测试:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Customercustomer=newCustomer();
customer.setName(
"微软11");
List<Address>addresses=newArrayList<Address>();
Addressaddress
=newentity.Address();
address.setAddressLine(
"address1");
address.setCountry(
"中国");
address.setPostCode(
"12345678");
addresses.add(address);
address
=newentity.Address();
address.setAddressLine(
"address2");
address.setCountry(
"美国");
address.setPostCode(
"4321");
addresses.add(address);
customer.setAddresses(addresses);

em.persist(customer);

下一篇:eclipse + JBoss 5 + EJB3开发指南(9):实现Entity Bean的多对多(many-to-many)映射

国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

分享到:
评论

相关推荐

    使用Eclipse+Jboss+MySql开发EJB

    总的来说,"使用Eclipse+Jboss+MySql开发EJB"是一个综合性的任务,涉及了开发环境的搭建、企业级组件的设计与实现、数据库的连接和操作以及应用的部署与测试。掌握这一流程对于Java EE开发者来说是至关重要的,因为...

    eclipse + JBoss 5 + EJB3开发指南

    ### Eclipse + JBoss 5 + EJB3 开发指南 #### (1):编写第一个无状态的SessionBean ##### 一、配置开发环境 在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1...

    eclipse + JBoss 5 + EJB3开发指南中的代码

    总的来说,"eclipse + JBoss 5 + EJB3开发指南中的代码"涵盖了Java EE开发的关键方面,特别是EJB3的使用。通过实践这些示例,开发者可以深入了解如何在现代企业环境中利用EJB3提高生产力,同时减少开发和维护的复杂...

    使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)

    在本文中,我们将深入探讨如何使用Eclipse IDE与JBoss应用程序服务器(版本7.x)来开发和部署一个基于EJB 3.x的简单企业级Java应用程序。EJB(Enterprise JavaBeans)是Java平台上的核心组件,它提供了一种标准的...

    Eclipse+Jboss EJB技术 会话Bean

    本实验以"广东工业大学Java EE Web编程技术课程"为背景,通过集成开发环境Eclipse和应用服务器JBoss,来实践会话Bean的创建和使用。 首先,Eclipse是一款广泛使用的Java IDE,它提供了丰富的工具和插件,支持Java ...

    手把手系列-Eclipse+JBossIDE+JBoss开发环境配置

    总结,配置Eclipse+JBossIDE+JBoss的开发环境涉及多个步骤,从安装软件、配置环境到创建项目和部署应用,每一步都对开发者的工作效率有直接影响。熟练掌握这些步骤,将有助于你在Java EE开发过程中游刃有余。通过...

    EJB3+JBOSS5+JPA整合

    **JBOSS5**是一个开源的应用服务器,它实现了Java EE 5规范,包括对EJB3和JPA的支持。JBOSS5提供了一个运行环境,开发者可以在其中部署和运行EJB3应用。它包含了Web服务器、JMS(Java Message Service)、JTA(Java ...

    EJB3 实例教程(JBoss+Eclipse+Ant)

    **EJB3 实例教程(JBoss+Eclipse+Ant)** Enterprise JavaBeans(EJB)是Java平台上用于构建可扩展、安全且事务处理能力强的企业级应用的技术。EJB3是EJB规范的一个重大改革,它引入了许多简化开发的特性,使得企业级...

    Jboss下开发ejb应用之一会话bean的应用

    本文将围绕“Jboss下开发ejb应用之一会话bean的应用”这一主题,深入探讨如何在Jboss应用服务器上开发和部署会话Bean,以及涉及到的相关工具和源码。 会话Bean是EJB的一种类型,它代表了业务逻辑组件,为客户端提供...

    yeclipse7.0+JBoss5.0测试EJB3.0环境搭建过程详解

    ### yeclipse7.0+JBoss5.0测试EJB3.0环境搭建过程详解 在深入探讨如何在yeclipse7.0与JBoss5.0环境下构建和测试EJB3.0应用之前,让我们先了解一些背景知识。EJB(Enterprise JavaBeans)是Java平台的一部分,用于...

    ejb课程测试代码,eclipse+jboss5.1 ant编译等代码

    在本课程测试代码中,我们将探讨如何在Eclipse集成开发环境(IDE)下使用Apache Ant构建工具,配合JBoss 5.1应用服务器进行EJB的开发和部署。 【Eclipse】是广泛使用的开源Java IDE,支持多种Java项目类型,包括EJB...

    eclipse+jboss+jsp.rar

    标题 "eclipse+jboss+jsp.rar" 涉及到的是一个关于如何在Eclipse集成开发环境中配置和使用JBoss应用服务器以及开发JSP应用程序的综合教程。这个压缩包包含了多个指南和步骤文档,帮助开发者了解和实践相关配置。 ...

    myEclipse+Jboss+mysql+EJB

    【标题】"myEclipse+Jboss+mysql+EJB"是一个综合性的开发环境配置,它涵盖了四个关键组件:myEclipse、Jboss、mysql和EJB。这些组件在IT行业中都扮演着重要的角色,尤其在企业级Java应用的开发与部署上。 ...

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...

    Jboss7.1.1+eclipse-kepler开发ejb3

    根据文件信息,以下是关于Jboss7.1.1与eclipse-kepler集成并开发ejb3的知识点。 首先,环境搭建方面,需要准备 JDK 1.5 或更高版本,并安装 Eclipse Kepler(版本4.3)。接着,下载并解压 Jboss7.1.1 到指定文件夹...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    《经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发》介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的...

Global site tag (gtag.js) - Google Analytics