EJB3.0之实体Bean的继承
在EJB 3.0框架中,实体Bean可以巧妙实现继承关系,展现强大的扩展能力。以我们熟悉的“Person”实体Bean为例,它拥有姓名和性别两个基础属性。想象一下在创世之际,上帝和女娲塑造了人类时,创造了“Man”和“Woman”两种实体,它们在EJB的世界中,都是实体Bean,并且都继承了“Person”的精髓。
在单一表策略中,副实体和子实体的所有数据都被存储在同一张数据库中,通过指定的一列来区分这些实体。这一策略在EJB 3.0中的实现,需要借助特定的注解。
例如:
```java
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE, discriminatorType = DiscriminatorType.STRING)
@DiscriminatorColumn(name = "P_TYPE", nullable = true)
public class Person {
// ...属性和方法...
}
@Entity
public class Man extends Person {
// Man特有的属性和方法
}
@Entity
public class Woman extends Person {
// Woman特有的属性和方法
}
```
相关注解的解释如下:
`@Inheritance` 用于声明实体继承策略。它指定了实体类之间的继承关系以及使用的策略类型。默认策略是单一表策略(SINGLE_TABLE)。
`@DiscriminatorColumn` 注解用于指定区分不同实体的列。在这个例子中,我们指定了列名为 "P_TYPE",并允许该列的值是null。这个列将用于区分数据库表中的Man和Woman记录。
这个例子的主要组成部分包括:
`Person.java`:实体Bean,代表基础人类类。
`Man.java` 和 `Woman.java`:分别代表男人和女人的实体Bean,继承自Person。
`PersonTest.java`:会话Bean的业务接口,用于测试与Person实体相关的业务逻辑。
`PersonTestBean.java`:会话Bean的实现类,具体实现业务接口的方法。
`Client.java`:测试EJB的客户端类,用于调用会话Bean的方法并测试实体Bean的继承关系。
`jndi.properties`:JNDI属性文件,提供访问JNDI的基本配置属性。
`Build.xml`:配置文件,用于编译、发布、测试和清除EJB。
当我们谈论狼蚁网站SEO优化时,其实与这里的实体Bean继承关系有着异曲同工之妙。在网站优化的过程中,我们也需要构建层次分明的结构,使得搜索引擎能够更好地理解和索引我们的内容。每个文件的内容都需要我们仔细研究并优化,以确保系统的稳健性和性能。在这个例子中,通过合理的注解配置和继承关系的设计,我们能够在EJB 3.0环境中灵活地管理实体Bean,实现业务逻辑的扩展和重用。Java中的类和实体:Person与Man
在Java的特定包".kuaff.ejb3.singleinheritance"中,我们有两个实体类:Person和Man。它们采用单继承策略,并使用同一数据库表来存储数据。这是通过EJB3的Inheritance注解实现的。
我们来看Person类。这是一个基础类,使用@Entity注解标识它是一个实体类,即它映射到数据库中的一个表。使用@Inheritance注解指定单表继承策略,这意味着所有继承自Person的子类将共享同一个数据库表。使用@DiscriminatorColumn注解指定用于区分不同子类的列,这里是"P_TYPE"。
Person类有三个私有成员变量:id,name和gender。它们分别表示人的编号,姓名和性别。对应的getter和setter方法用于获取和设置这些变量的值。
接下来是Man类,它继承了Person类。同样,它也是一个实体类,使用@Entity注解标识。在@Inheritance注解中,我们指定了鉴别器值为"Man",这样,在共享表中,我们可以根据P_TYPE列的值来区分不同的记录是Person还是Man。
Man类增加了一个新属性:isGood。这是一个布尔值,用来表示一个男人是否是好男人。通过setGood和isGood方法,我们可以获取和设置这个属性的值。
在Java的世界中,我们有一个关于单继承的有趣故事正在展开。在这个故事中,我们有一个名为`.kuaff.ejb3.singleinheritance`的包,里面充满了有趣的Java类。今天,我们要重点关注其中的三个类:Woman.java、EntityTest.java以及PersonTestBean.java。
让我们打开Woman.java这个文件。这是一个继承了Person类的实体类,代表了我们生活中的女性角色。在这个类中,有一个特别的属性`isbeautiful`,它代表了这个女性的美丽程度。这个类还有一个方法`setIsbeautiful()`用于设置这个属性的值,以及一个`isIsbeautiful()`方法来获取这个属性的当前值。这个类还使用了EJB3的注解,指明了它在继承策略中的位置,它是单表继承策略的一部分,并有一个字符串类型的辨别器来区分不同的实体。
接下来,我们看EntityTest.java这个文件。这是一个接口,名为PersonDAO。这个接口提供了创建和查找Person实体Bean的方法。具体地,它提供了创建Man和Woman实体Bean的方法,以及一些根据名字和性别信息来查找实体Bean的方法。这是一个非常实用的接口,为我们提供了对数据库中的Person实体进行操作的途径。
我们来看PersonTestBean.java这个文件。这是一个无状态的会话Bean,实现了PersonDAO接口。在这个类中,我们使用EntityManager来创建、查找和更新数据库中的实体。在createMan()和createWoman()方法中,我们分别创建了Man和Woman实体,并设置了他们的属性,然后将其保存到数据库中。find()方法用于从数据库中查找特定的实体。而findByName()和findByInfo()方法则是根据名字和性别信息来查询数据库中的实体。
设想在一个普通的Java开发环境中,你正在运行一个名为Kuaff的项目,它使用了EJB3的单继承特性。你的项目里有一个名为Client的测试类,它的主要任务是验证EJB的功能。让我们一起走进这个Client的世界,看看它是如何工作的。
你需要启动你的JBOSS服务器。如何启动呢?很简单,只需运行{$JBOSS_HOME}/bin目录下的run.bat文件,然后输入run –c all命令。这就像打开了通往你项目的大门,让所有的服务开始运行。
接着,你打开了JMX控制台,URL为:[
然后,回到你的Client类。在main方法中,你通过JNDI查找一个名为PersonDAO的EJB,这是一个数据访问对象,用于处理与Person实体的数据库操作。你创建了一个男人和一个女人,并通过查找方法获取你刚刚创建的人的信息,然后打印出来。这是一个简单的验证步骤,确保你的EJB能够正确地在数据库中创建和检索数据。
接着,你使用PersonDAO的findByName方法来查找具有特定名称的人。在这个例子中,你查找了一个名为“朱立焕”的人,并检查她是否漂亮。这是一个有趣的查询,让你了解EJB如何处理复杂的查询请求。
如果你想编译和发布你的EJB项目,你可以在Eclipse的Ant视图中执行ejbjar target命令,或者在命令行下进入项目目录并执行ant ejbjar命令。然后,你可以通过执行run target命令或在命令行下执行ant run命令来测试你的EJB。这是一个完整的流程,从启动服务器到测试EJB的全过程。这是一个富有成效的测试过程,确保了你的代码按照预期运行。
网络推广网站
- EJB3.0之实体Bean的继承
- JavaScipt中栈的实现方法
- javaScript日期工具类DateUtils详解
- 浅谈ES6新增的数组方法和对象
- PHP函数用法详解【初始化、嵌套、内置函数等】
- PHP+ajax实现获取新闻数据简单示例
- asp.net 无刷新分页实例代码
- ionic实现滑动的三种方式
- JavaScript实现三级联动菜单效果
- 详解JavaScript中的异常处理方法
- 微信小程序上传图片到服务器实例代码
- Angularjs Promise实例详解
- D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本
- MySQL的源码安装及使用UDFs进行数据自动更新的教
- jquery操作checkbox的常用方法总结【附测试源码下载
- vue项目前端错误收集之sentry教程详解