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

eclipse + JBoss 5 + EJB3开发指南(11):实体Bean的连接策略(JOINED Strategy)

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

上一篇:eclipse + JBoss 5 + EJB3开发指南(10):通过继承实体Bean,将单个表映射成多个表(单表策略,SINGLE_TABLE)

在上一篇文章中,使用单表策略将一个表从逻辑上分成了多个表。但这样可能会造成空巢字段,也就是说,一个逻辑表只由部分字段组成,而物理的表的很多字段的值就会为null。为了解决这个问题,可以将t_accounts表物理地分成多个表。为了与t_accounts表进行对比,新建一个t_myaccounts表,结构如图1所示。

图1 t_myaccounts表

从t_myaccounts的结构可以看出,在该表中只包含了t_accounts表的前三个字段,而后两个在逻辑上分到了不同的表,因此,首先要建立两个物理表:t_checkingaccount和t_savingsaccount。这两个表的结构如下:



图2 t_checkingaccount表



图3 t_savingsaccount表

在t_checkingaccount和t_savingsaccount表中都有一个account_id,这个account_id的值依赖于t_myaccounts表中的account_id。
下面先来编写与t_myaccounts对应的实体Bean,代码如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packageentity;

importjavax.persistence.Column;
importjavax.persistence.DiscriminatorColumn;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.Inheritance;
importjavax.persistence.InheritanceType;
importjavax.persistence.Table;

@Entity
@Table(name
="t_myaccounts")
@Inheritance(strategy
=InheritanceType.JOINED)
publicclassAccount
{
protectedStringid;
protectedfloatbalance;
protectedStringtype;
@Id
@GeneratedValue(strategy
=GenerationType.IDENTITY)
@Column(name
="account_id")
publicStringgetId()
{
returnid;
}
publicvoidsetId(Stringid)
{
this.id=id;
}
publicfloatgetBalance()
{
returnbalance;
}
publicvoidsetBalance(floatbalance)
{
this.balance=balance;
}
@Column(name
="account_type")
publicStringgetType()
{
returntype;
}
publicvoidsetType(Stringtype)
{
this.type=type;
}
}

从上面的代码可以看出,只使用了@Inheritance对实体Bean进行注释。
下面编写MyCheckingAccountMySavingsAccount类的代码:

MyCheckingAccount类的代码:

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

importjavax.persistence.Column;
importjavax.persistence.DiscriminatorValue;
importjavax.persistence.Entity;
importjavax.persistence.Id;
importjavax.persistence.PrimaryKeyJoinColumn;
importjavax.persistence.Table;

@Entity
@Table(name
="t_checkingaccount")
//指定与Account类共享的主键名
@PrimaryKeyJoinColumn(name="account_id")
publicclassMyCheckingAccountextendsAccount
{
privatedoubleoverdraftLimit;
publicMyCheckingAccount()
{
//为account_type字段赋默认值
setType("C");
}
@Column(name
="overdraft_limit")
publicdoublegetOverdraftLimit()
{
returnoverdraftLimit;
}

publicvoidsetOverdraftLimit(doubleoverdraftLimit)
{
this.overdraftLimit=overdraftLimit;
}
}

MySavingsAccount类的代码:

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

importjavax.persistence.Column;
importjavax.persistence.DiscriminatorValue;
importjavax.persistence.Entity;
importjavax.persistence.Id;
importjavax.persistence.PrimaryKeyJoinColumn;
importjavax.persistence.Table;

@Entity
@Table(name
="t_savingsaccount")
@PrimaryKeyJoinColumn(name
="account_id")
publicclassMySavingsAccountextendsAccount
{

privatedoubleinterestRate;
publicMySavingsAccount()
{
//为account_type字段赋默认值
setType("S");
}
@Column(name
="interest_rate")
publicdoublegetInterestRate()
{
returninterestRate;
}
publicvoidsetInterestRate(doubleinterestRate)
{
this.interestRate=interestRate;
}
}

在上面的代码中使用构造方法来初始化了t_myaccounts表的account_type字段的值。
可以使用下面的代码进行测试:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->System.out.println(((MyCheckingAccount)em.createQuery("fromMyCheckingAccountwhereid=12")
.getSingleResult()).getBalance());
MyCheckingAccountca
=newMyCheckingAccount();
ca.setBalance(
342);
ca.setOverdraftLimit(
120);
em.persist(ca);
MySavingsAccountsa
=newMySavingsAccount();
sa.setBalance(
200);
sa.setInterestRate(
321);
em.persist(sa);

下一篇:eclipse + JBoss 5 + EJB3开发指南(12):使用命名查询执行JPQL

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

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

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

分享到:
评论

相关推荐

    使用Eclipse+Jboss+MySql开发EJB

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

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

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

    eclipse + JBoss 5 + EJB3开发指南

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

    使用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集成开发环境(IDE)配合JBossIDE插件以及JBoss应用服务器来搭建一个高效、稳定的Java EE开发环境。接下来,我们将深入探讨这个主题,详细讲解每一个步骤。 一、Eclipse简介 ...

    EJB3+JBOSS5+JPA整合

    1. **实体Bean (Entity Beans)**:代表持久化的数据对象,EJB3中实体Bean使用了JPA(Java Persistence API)进行持久化管理,使得ORM(对象关系映射)更为简便。 2. **会话Bean (Session Beans)**:处理业务逻辑,...

    eclipse+jboss+jsp.rar

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

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

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

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

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

    myEclipse+Jboss+mysql+EJB

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

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

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

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

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

    经典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...

    经典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的...

    Eclipse + Jboss 开发J2EE应用

    在IT行业中,开发Java企业级应用(J2EE应用)是一项关键技能,而Eclipse作为一款强大的集成开发环境(IDE)和JBoss Application Server(现在称为WildFly)作为开源的应用服务器,是Java开发者常用的选择。...

Global site tag (gtag.js) - Google Analytics