`
jdlsfl
  • 浏览: 159776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EJB学习之EntityBean(实体Bean)

阅读更多

序言:

那么首先我们要讲到的是EntityBean就是实体Bean

实体 Bean

   用于封装业务实体的EJB 组件

一.      数据源和连接池

数据源:

Data source , 获取数据的来源。

作用:Web服务器只要配置好数据源的名称后,程序可以直接调用数据源而得到数据库连接。当web服务器更换或数据库更换时候,只要数据源的名称不变,并不影响程序。

连接池:

用来存放数据库连接的容器。

作用:当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。

特点:现在假设:最大维持连接数是10,最大连接数是20,最大等待时间是10000(毫秒)
其过程:最开始在连接池中有10个连接(最大维持连接数),当有用户申请连接时,其将一个连接分配用户,直到连接池中的10个连接全都分配出去,当第 11个用户申请连接时,它将创建第11个连接并分配给该用户,直到把第20个连接(最大连接数)分配给第20个用户,当第21个用户申请连接时,它需要等待,直到前面的20个用户中某一个断开了连接,才会把那个连接分配给第21个用户,当用户断开连接时(第1120个连接),该连接不会立刻被释放而是需 要等待10000毫秒(最大等待时间),才被释放,当没有用户连接时,连接池内还保持10个连接。

演示weblogic配置数据源和连接池

二.      实例Bean

什么是实体Bean:

EntitiyBean是用来封装业务实体的持久存储的EJB组件.

它是业务实体

也是持久化对象

用来存储在数据库中的数据

业务概念/系统名词

为什么要使用实体Bean

在安全保护和事务上下文中执行

可重用性高

表示持久层数据对象

支持同时访问(并发)

什么是实体Bean的持久性:

Java 对象序列化

对象-关系映射

对象数据库

Java 对象保存在永久存储器中

使用 Oracle Microsoft SQL

Server 等关系数据库

存放整个对象

实体 Bean 是持久对象,即使应用程序结束,它仍然存在

持久性

何时使用实体Bean

1Bean应表示业务实体而非业务过程时;

2Bean的状态应该是持久的时候。

实体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 Entity bean(PDF)

    在学习EJB2.0实体Bean时,你可能会涉及的概念包括:Entity Home Interface、Entity Bean Class、Entity Remote Interface、Finder Methods、PrimaryKey Class以及实体Bean的部署描述符(deployment descriptor)等。...

    ejb3-entitybean-maven-archetype source code

    通过阅读这篇博客,读者可以学习如何利用这个模板创建自己的EJB 3实体Bean项目,理解如何配置Maven,以及如何设计和实现EJB实体。 在实际的开发过程中,EJB 3实体Bean常与Java Persistence API (JPA) 结合使用,...

    EJB详解 sessionbean entitybean MDB

    - **Entity Bean**:用于表示数据库中的持久化对象,实现业务实体的数据管理和业务逻辑。传统的Entity Bean(CMP)由容器管理持久性,而现代的JPA(Java Persistence API)通常与Entity Bean一起使用,提供更灵活的...

    EJB3开发Entity

    EJB3的实体Bean通常与Java Persistence API (JPA)一起使用,JPA是Java EE的一部分,提供了一种标准的方式来管理对象-关系映射(ORM)。Hibernate是一个流行的JPA实现,提供了更丰富的功能和性能优化。 3. **注解...

    ejb实体bean实例

    实体Bean(Entity Bean)是EJB的一种类型,它代表业务逻辑中的持久化对象,通常映射到数据库中的表。本篇文章将深入探讨EJB实体Bean的概念、其在Eclipse集成开发环境中的使用,以及与MySQL数据库的集成。 ### 一、...

    Ejb开发实体bean

    3. **开发实体Bean**:实体Bean需要实现特定的接口,如`javax.ejb.EntityBean`或使用注解`@Entity`(在Java EE 5及以后版本)。这些Bean通常使用JPA(Java Persistence API)进行持久化操作,通过ORM(对象关系映射...

    ejb实例包括session bean和实体bean

    2. **Container-managed Persistence (CMP)**:容器负责对象与数据库之间的持久化工作,开发者无需直接处理数据库操作,只需定义实体Bean的字段和属性。 3. **Entity Beans 3.0(EJB 3.0引入)**:简化了Entity Bean...

    EJB 3.0学习之实体Bean

    EJB 3.0是Java企业版(Java EE)中的一个重大改进,它极大地简化了企业级Java组件的开发,特别是对于实体Bean的处理。在EJB 3.0之前,实体Bean通常需要实现Home接口、Remote接口或Local接口,这使得编码过程变得复杂...

    EJB2.0 Entity bean(PDF) .zip_EJB2 enti_EJB2.0 P_ejb_ejb2 CMP sup

    EJB 2.0实体Bean(Entity Bean) 实体Bean代表了业务逻辑中的持久化数据对象,它们与数据库中的记录相对应。在EJB 2.0中,实体Bean分为两种类型:CMP(容器管理持久性)和BMP(Bean管理持久性)。 #### 1.1 容器...

    Jboss下开发ejb应用之一实体bean的应用

    标题:“Jboss下开发ejb应用之一实体bean的应用” 首先,理解EJB实体Bean的含义至关重要。实体Bean代表持久化的业务对象,它们与数据库中的记录相对应,负责存储和检索数据。EJB 3.0引入了注解驱动的开发方式,大大...

    ejb3实例(包括sessionbean和entitybean)

    EJB 3引入了JPA(Java Persistence API),使得实体Bean的定义和管理更加简单,不再需要编写大量的XML配置文件。通过使用@Entity注解,开发者可以直接将Java类声明为数据库中的实体,并使用@NamedQuery或@Query来...

    EJB实体Bean学习

    在这个“EJB实体Bean学习”主题中,我们将深入探讨实体Bean的两大类型——BMP(Business Managed Persistence)和CMP(Container Managed Persistence),以及如何进行基本的CRUD(创建、读取、更新和删除)操作。...

    2022年EJB3.0之实体Bean的继承Java教程.docx

    在EJB3.0规范中,实体Bean(Entity Bean)是一种持久化对象,它们负责存储应用程序中的业务数据。本教程聚焦于实体Bean的继承机制,这允许开发人员创建具有层次结构的数据模型,使得子类可以扩展父类的属性和行为。...

    EJB3 (一)【开发Entity Bean】

    在EJB3中,Entity Bean的主要改进是引入了注解,使得无需XML配置即可定义实体类和其行为。这大大减少了开发时间,并提高了代码的可读性。 **2. JPA(Java Persistence API)** EJB3中的Entity Bean依赖于JPA来处理...

    Bean开发实例之三实体Bean开发实例

    **总结**:实体Bean是EJB框架中的核心组件之一,它用于表示持久化的数据并提供相应的业务逻辑。实体Bean的开发需要理解其基本理论,掌握CMP和BMP的区别,以及如何构建实体Bean的各种组成部分。通过合理的实体Bean...

    EJB3.0开发Entity.rar

    EJB 3.0的Entity Bean可以与其他EJB(如Session Beans)或Web层(如Servlets)协作,形成完整的Java EE应用程序。 综上所述,EJB 3.0 Entity Bean的开发涉及了JPA、ORM、事务管理、查询语言等多个方面,通过注解...

    EJB3.0开发Session Bean.rar

    虽然EJB 3.0规范主要讨论Session Bean,但还包含了对实体Bean(Entity Bean)的支持,这些Bean与数据库中的记录对应。`@Entity`注解用于声明一个持久化的Java类,而`@Table`, `@Id`, `@GeneratedValue`等注解则用于...

    ejb之实体Bean与cloudscape数据库事务处理代码

    在Java世界里,EJB(Enterprise JavaBeans)是用于构建企业级应用的重要组件模型,尤其在J2EE 1.3版本中,实体Bean(Entity Beans)是处理业务对象持久化的主要工具。实体Bean通常代表应用程序中的数据模型,如...

    EJB3.0开发Entity

    EJB(Enterprise JavaBeans)是Java平台为企业级应用提供的组件模型,EJB3.0是其重要的一次更新,引入了许多简化开发过程的特性,特别是对实体Bean的支持,使之更接近于POJO(Plain Old Java Object),从而降低了...

Global site tag (gtag.js) - Google Analytics