JavaEJB与MySQL数据库交互开发指南
立即解锁
发布时间: 2025-08-19 01:16:11 阅读量: 1 订阅数: 3 

# Java EJB与MySQL数据库交互开发指南
## 1. EJB基础概念
### 1.1 EJB概述
EJB(Enterprise JavaBeans)是一种组件,不能独立存在,必须是应用程序的一部分。它会暴露一个定义好的接口,包含可调用的方法,并能引发特定响应。EJB可以自己完成暴露方法背后的工作,也可以实例化或调用其他EJB来完成任务。为了实现其功能,EJB需要运行在一个名为容器的环境中,容器负责管理所有EJB,包括安全和事务等功能。要充分利用容器,EJB必须按照Sun预定义的规范来定义。
### 1.2 EJB类型
EJB规范定义了两种类型:会话Bean(Session Bean)和实体Bean(Entity Bean),通常也可分为主动类型(会话Bean)和被动类型(实体Bean)。
- **会话Bean**:用于处理应用程序逻辑规定的业务流程。在三层架构中,会话Bean包含了Servlet中处理客户端请求所需的所有功能部分。它一次只为一个客户端的请求工作,没有多任务处理能力。会话Bean可分为无状态会话Bean(用于处理对数据库的单个请求)和有状态会话Bean(只要客户端需要就会一直存在)。
- **实体Bean**:可以让我们以面向对象的视角对数据库中的数据进行建模。数据库的每个表都可以用一个实体Bean来表示,例如`acc_acc`、`acc_add`和`acc_cert`表。实体Bean也运行在容器中,容器的一个重要任务是确保Bean中的数据与数据库中的数据一致,因为实体Bean允许多个客户端同时访问。
### 1.3 EJB环境
EJB是根据Sun制定的严格规范设计的,该规范及其接口在Java 2 Platform Enterprise Edition(J2EE)中定义。J2EE是Java 2 Platform Standard Edition(J2SE)的扩展,其中包含开发EJB所需的API以及使用EJB容器等Bean的参考实现。
### 1.4 EJB的组成部分
#### 1.4.1 Bean
所有的Bean都必须实现以下接口:
```java
public interface javax.ejb.EnterpriseBean extends
java.io.Serializable {}
```
在实现中包含了应用程序对该Bean所需的逻辑。如果是会话Bean,通常包含实现功能所需的方法和代码;如果是实体Bean,代码则对数据库中的数据进行建模,通常包含该Bean所代表的表的列。
#### 1.4.2 远程接口(Remote Interface)
在EJB规范开发过程中,尽量让开发者远离网络编程问题是一个重要目标。为了隔离网络编程,EJB规范使用了代理对象的概念,即远程接口。它作为Bean的外部接口,接受客户端的请求,并通过容器将请求路由到Bean。远程接口必须包含Bean暴露的所有方法,并且必须实现`EJBObject`接口:
```java
public interface EJBObject extends Remote {
public EJBHome getEJBHome() throws RemoteException;
public Object getPrimaryKey() throws RemoteException;
public void remove() throws RemoteException, RemoveException;
public Handle getHandle() throws RemoteException;
boolean isIdentical(EJBObject obj) throws RemoteException;
}
```
容器使用这里定义的方法来管理Bean,开发者还可以添加其他要暴露给外部客户端的方法。
#### 1.4.3 主接口(Home Interface)
主接口也是一个代理对象,用于查找和创建EJB。当应用程序需要访问某个特定的Bean时,使用主接口来获取该对象的引用。主接口就像一个工厂,要么返回一个之前实例化但处于非活动状态的Bean,要么根据需要创建一个新的Bean。J2EE规范定义了如下接口供Bean实现:
```java
public interface <example>Home extends EJBHome {
<example> create(<parameters>) throws RemoteException,
CreateException;
}
```
这里的`<example>`占位符会被Bean的名称替换,开发者可以根据需要使用适当的参数添加多个`create()`方法。
#### 1.4.4 部署信息
成功创建EJB还需要部署信息,通常包括管理、持久化、执行和安全要求等。
#### 1.4.5 JAR/WAR文件
所有EJB组件会被打包成JAR或Web存档(WAR)文件,具体添加哪些组件到JAR/WAR文件取决于用于容纳EJB的应用服务器。
#### 1.4.6 应用服务器
EJB必须运行在容器中,Connector/J和简单的Web服务器都不能提供这个容器,需要一个Java应用服务器。应用服务器作为EJB的容器,在很多情况下还能执行Servlet和传统HTML文件。本文的示例以Resin应用服务器(可从www.caucho.com获取)为例。了解EJB的部署环境很重要,因为有些服务器会提供编写EJB的辅助包,并明确如何部署EJB。
### 1.5 应用服务器配置
为了让EJB能够通过Connector/J驱动访问MySQL数据库,需要创建`<resource-ref>`,就像构建Servlet时一样。在Resin中,可以创建全局和本地化的数据库资源引用。以下是一个`<resource-ref>`元素的示例:
```xml
<resource-ref>
<res-ref-name>jdbc/AccountsDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="com.mysql.jdbc.Driver"/>
<init-param url="jdbc:mysql://192.168.1.25/accounts"/>
<init-param user="spider"/>
<init-param password="spider"/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>
```
我们将资源引用命名为`AccountsDB`,表示它将连接到`Accounts`数据库。其他参数根据具体的MySQL数据库需求提供,特别要注意驱动名称必须是Connector/J驱动。
还需要在与应用程序关联的本地`web.xml`文件中创建一个引用,让Bean能够访问数据库:
```xml
<resource-ref>
<res-ref-name>java:comp/env/cmp</res-ref-name>
<class-name>com.caucho.ejb.EJBServer</class-name>
<ini
```
0
0
复制全文
相关推荐









