序言:
那么首先我们要讲到的是EntityBean就是实体Bean。
实体 Bean
用于封装业务实体的EJB 组件
一. 数据源和连接池
数据源:
Data source , 获取数据的来源。
作用:Web服务器只要配置好数据源的名称后,程序可以直接调用数据源而得到数据库连接。当web服务器更换或数据库更换时候,只要数据源的名称不变,并不影响程序。
连接池:
用来存放数据库连接的容器。
作用:当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。
特点:现在假设:最大维持连接数是10,最大连接数是20,最大等待时间是10000(毫秒)
其过程:最开始在连接池中有10个连接(最大维持连接数),当有用户申请连接时,其将一个连接分配用户,直到连接池中的10个连接全都分配出去,当第 11个用户申请连接时,它将创建第11个连接并分配给该用户,直到把第20个连接(最大连接数)分配给第20个用户,当第21个用户申请连接时,它需要等待,直到前面的20个用户中某一个断开了连接,才会把那个连接分配给第21个用户,当用户断开连接时(第11至20个连接),该连接不会立刻被释放而是需 要等待10000毫秒(最大等待时间),才被释放,当没有用户连接时,连接池内还保持10个连接。
演示weblogic配置数据源和连接池
二. 实例Bean
什么是实体Bean:
EntitiyBean是用来封装业务实体的持久存储的EJB组件.
它是业务实体
也是持久化对象
用来存储在数据库中的数据
业务概念/系统名词
为什么要使用实体Bean:
在安全保护和事务上下文中执行
可重用性高
表示持久层数据对象
支持同时访问(并发)
什么是实体Bean的持久性:
使用 Oracle 或 Microsoft SQL
Server 等关系数据库
|
实体 Bean 是持久对象,即使应用程序结束,它仍然存在
|
何时使用实体Bean:
1、Bean应表示业务实体而非业务过程时;
2、Bean的状态应该是持久的时候。
实体Bean类型
根据实体Bean的类型我们可以把它分为两类:
一、CMP Container-Manager Persistence
二、BMP Bean-Manager Persistence
CMP是由容器来管理Bean的添加、更新、查询和删除的操作,并由EJB容器自动启动事务。
使用CMP最大的特点是:
BMP是由开发者自己编写的代码来管理Bean的添加、更新、查询和删除的操作,并手动控制事务。
BMP的特点:手动编写数据库连接代码,
实体Bean编写规范
哪么如何才能编写一个EntityBean?
EntityBean规范:
|
|___Home接口 提供添加、查找数据实体的方法
|
|___远程接口 提供访问更新和得到数据方法
|
|___Bean类 数据库操作方法
ejbCreate() : 创建方法,调用该方法时会在数据库中插入新数据。实体Bean类可以有多个ejbCreate()方法,但参数不同。
ejbPostCreate() : 该方法在ejbCreate()方法执行完成之后调用。每个ejbCreate()方法都有一个对象的ejbPostCreate()方法,且会调用它来完成初始化后的操作。
ejbLoad() : 刷行数据库的实例对象的数据。容器可将持久层的数据加载到实体Bean的内存中。
ejbStore() : 用于将实体Bean的当前字段保存在持久层。保证了数据库中和高速缓存中匹配。
ejbRemove() : 用于从持久层删除一条记录。
findByPrimaryKey() ; 按主键去查找一个实例Bean的实例。
weblogic-cmp-rdbms-jar.xml 配置CMP配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-rdbms-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic <st1:chsdate isrocdate="False" month="12" islunardate="False" day="30" year="1899">8.1.0</st1:chsdate> EJB RDBMS Persistence//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-rdbms20-persistence-810.dtd">
<weblogic-rdbms-jar>
<weblogic-rdbms-bean>
<ejb-name>Jobs</ejb-name>
<data-source-name>pubs</data-source-name>
<table-map>
<table-name>jobs</table-name>
<field-map>
<cmp-field>jobId</cmp-field>
<dbms-column>job_id</dbms-column>
</field-map>
<field-map>
<cmp-field>jobDesc</cmp-field>
<dbms-column>job_desc</dbms-column>
</field-map>
<field-map>
<cmp-field>minLvl</cmp-field>
<dbms-column>min_lvl</dbms-column>
</field-map>
<field-map>
<cmp-field>maxLvl</cmp-field>
<dbms-column>max_lvl</dbms-column>
</field-map>
</table-map>
<automatic-key-generation>
<generator-type>SQLserver</generator-type>
</automatic-key-generation>
</weblogic-rdbms-bean>
</weblogic-rdbms-jar>
实体Bean调用过程
介绍完规范后,我们来讲解一下EntityBean被客户端的调用过程:
当EntityBean不存在时由容器创建一个EntityBean,容器就会调用实体Bean类的setEntityContext()方法,将上下文传递给Bean。 EntityBean创建实例后即刻将实例放入实例池中。池中所有的实例都完全相同。容器调用ejbActivate()方法将实体Bean放入就绪池,容器就会给实体Bean实例指定一个标识。
什么情况下EntityBean的实例会从入池状态转换成就绪状态?
有两种情况:
第一种是客户端调用create()方法,容器调用ejbCreate()和ejbPostCreate()方法
第二种是EJB容器调用ejbActive()方法。(当实体Bean处于就绪状态时,可调用业务方法。)
什么情况下EntityBean的实例会从就绪状态转换成入池状态?
第一种是当客户端调用remove()方法时,EJB容器调用ejbRemove()方法。
第二种是EJB容器调用ejbPassivate()方法。
最后,EJB容器删除池中的Bean实例就会调用unsetEntityContext()方法,因此实体Bean就不存在了。
分享到:
相关推荐
在学习EJB2.0实体Bean时,你可能会涉及的概念包括:Entity Home Interface、Entity Bean Class、Entity Remote Interface、Finder Methods、PrimaryKey Class以及实体Bean的部署描述符(deployment descriptor)等。...
通过阅读这篇博客,读者可以学习如何利用这个模板创建自己的EJB 3实体Bean项目,理解如何配置Maven,以及如何设计和实现EJB实体。 在实际的开发过程中,EJB 3实体Bean常与Java Persistence API (JPA) 结合使用,...
- **Entity Bean**:用于表示数据库中的持久化对象,实现业务实体的数据管理和业务逻辑。传统的Entity Bean(CMP)由容器管理持久性,而现代的JPA(Java Persistence API)通常与Entity Bean一起使用,提供更灵活的...
EJB3的实体Bean通常与Java Persistence API (JPA)一起使用,JPA是Java EE的一部分,提供了一种标准的方式来管理对象-关系映射(ORM)。Hibernate是一个流行的JPA实现,提供了更丰富的功能和性能优化。 3. **注解...
实体Bean(Entity Bean)是EJB的一种类型,它代表业务逻辑中的持久化对象,通常映射到数据库中的表。本篇文章将深入探讨EJB实体Bean的概念、其在Eclipse集成开发环境中的使用,以及与MySQL数据库的集成。 ### 一、...
3. **开发实体Bean**:实体Bean需要实现特定的接口,如`javax.ejb.EntityBean`或使用注解`@Entity`(在Java EE 5及以后版本)。这些Bean通常使用JPA(Java Persistence API)进行持久化操作,通过ORM(对象关系映射...
2. **Container-managed Persistence (CMP)**:容器负责对象与数据库之间的持久化工作,开发者无需直接处理数据库操作,只需定义实体Bean的字段和属性。 3. **Entity Beans 3.0(EJB 3.0引入)**:简化了Entity Bean...
EJB 3.0是Java企业版(Java EE)中的一个重大改进,它极大地简化了企业级Java组件的开发,特别是对于实体Bean的处理。在EJB 3.0之前,实体Bean通常需要实现Home接口、Remote接口或Local接口,这使得编码过程变得复杂...
EJB 2.0实体Bean(Entity Bean) 实体Bean代表了业务逻辑中的持久化数据对象,它们与数据库中的记录相对应。在EJB 2.0中,实体Bean分为两种类型:CMP(容器管理持久性)和BMP(Bean管理持久性)。 #### 1.1 容器...
标题:“Jboss下开发ejb应用之一实体bean的应用” 首先,理解EJB实体Bean的含义至关重要。实体Bean代表持久化的业务对象,它们与数据库中的记录相对应,负责存储和检索数据。EJB 3.0引入了注解驱动的开发方式,大大...
EJB 3引入了JPA(Java Persistence API),使得实体Bean的定义和管理更加简单,不再需要编写大量的XML配置文件。通过使用@Entity注解,开发者可以直接将Java类声明为数据库中的实体,并使用@NamedQuery或@Query来...
在这个“EJB实体Bean学习”主题中,我们将深入探讨实体Bean的两大类型——BMP(Business Managed Persistence)和CMP(Container Managed Persistence),以及如何进行基本的CRUD(创建、读取、更新和删除)操作。...
在EJB3.0规范中,实体Bean(Entity Bean)是一种持久化对象,它们负责存储应用程序中的业务数据。本教程聚焦于实体Bean的继承机制,这允许开发人员创建具有层次结构的数据模型,使得子类可以扩展父类的属性和行为。...
在EJB3中,Entity Bean的主要改进是引入了注解,使得无需XML配置即可定义实体类和其行为。这大大减少了开发时间,并提高了代码的可读性。 **2. JPA(Java Persistence API)** EJB3中的Entity Bean依赖于JPA来处理...
**总结**:实体Bean是EJB框架中的核心组件之一,它用于表示持久化的数据并提供相应的业务逻辑。实体Bean的开发需要理解其基本理论,掌握CMP和BMP的区别,以及如何构建实体Bean的各种组成部分。通过合理的实体Bean...
EJB 3.0的Entity Bean可以与其他EJB(如Session Beans)或Web层(如Servlets)协作,形成完整的Java EE应用程序。 综上所述,EJB 3.0 Entity Bean的开发涉及了JPA、ORM、事务管理、查询语言等多个方面,通过注解...
虽然EJB 3.0规范主要讨论Session Bean,但还包含了对实体Bean(Entity Bean)的支持,这些Bean与数据库中的记录对应。`@Entity`注解用于声明一个持久化的Java类,而`@Table`, `@Id`, `@GeneratedValue`等注解则用于...
在Java世界里,EJB(Enterprise JavaBeans)是用于构建企业级应用的重要组件模型,尤其在J2EE 1.3版本中,实体Bean(Entity Beans)是处理业务对象持久化的主要工具。实体Bean通常代表应用程序中的数据模型,如...
EJB(Enterprise JavaBeans)是Java平台为企业级应用提供的组件模型,EJB3.0是其重要的一次更新,引入了许多简化开发过程的特性,特别是对实体Bean的支持,使之更接近于POJO(Plain Old Java Object),从而降低了...