EJB
ncepustrong
这个作者很懒,什么都没留下…
展开
-
EJB---->EJB 概念
Enterprise JavaBean(EJB)定义了三种企业Bean,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。实体Bean 实体bean 除了担负起存放数据的角色,还要负责跟数据库表进行对象与关系映射(O/R Mapping),消息驱动Bean(MDB):是设计用来专门处理转载 2012-05-15 16:22:50 · 802 阅读 · 0 评论 -
EJB---->实体继承
三个类分别是:Vehicle(交通工具),Car(汽车),Camion(卡车),他们的继承关系如下:因为关系数据库的表之间不存在继承关系,Entity 提供三种基本的继承映射策略:每个类分层结构一张表(table per class hierarchy)每个子类一张表(table per subclass)每个具体类一张表(table per concrete class)一、转载 2012-05-17 23:13:05 · 720 阅读 · 0 评论 -
EJB---->jboss数据源的配置
数据源用于配置数据库的连接信息,每个数据源必须指定一个唯一的JNDI名称。应用通过JNDI名称找到数据源。各种数据库的数据源配置模版你可以在[Jboss 安装目录]\docs\examples\jca 目录中找到,默认名称为:数据库名+ -ds.xml 。不管你使用那种数据库都需要把他的驱动类Jar 包放置在[Jboss 安装目录]\server\default\lib 目录下,放置后需要转载 2012-05-15 16:25:17 · 641 阅读 · 0 评论 -
EJB---->事务管理服务
最有用的容器服务可能就是事务管理服务,当应用出现失败或异常时,它保证了数据库的完整性。你可以简单地将为一个POJO 方法申明它的事务属性。这样容器就可以在合适的上下文中运行这个方法。最常见的事务是定义在session bean 的方法上,方法中所有的数据库操作只有在方法正常退出时才会提交,如果方法抛出未捕获的异常,事务管理将回滚所有的变更。@TransactionAttribute 注释用作定转载 2012-05-18 08:52:34 · 519 阅读 · 0 评论 -
EJB---->复合主键(Composite Primary Key)
当我们需要使用多个属性变量(表中的多列)联合起来作为主键,我们需要使用复合主键。复合主键要求我们编写一个复合主键类( Composite Primary Key Class )。复合主键类需要符合以下一些要求:·复合主键类必须是public 和具备一个没有参数的构造函数·复合主键类的每个属性变量必须有getter/setter,如果没有,每个属性变量则必须是public 或者protect转载 2012-05-17 23:13:15 · 2405 阅读 · 0 评论 -
EJB---->调用存储过程
要调用存储过程,我们可以通过EntityManager 对象的createNativeQuery()方法执行SQL 语句(注意:这里说的是SQL 语句,不是EJB3 QL), 调用存储过程的SQL 格式如下:{call 存储过程名称(参数1, 参数2, … )}在EJB3 中你可以调用的存储过程有两种1.无返回值的存储过程。2.返回值为ResultSet(以select 形式返回的转载 2012-05-18 08:52:44 · 748 阅读 · 0 评论 -
EJB---->JMS(Java Message Service)和消息驱动bean
Java 消息服务(Java Message Service,简称JMS)是企业级消息传递系统,紧密集成于Jboss Server 平台之中。企业消息传递系统使得应用程序能够通过消息的交换与其他系统之间进行通信。消息的传递模型:JMS 支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub)。这两转载 2012-05-15 16:28:58 · 1013 阅读 · 0 评论 -
EJB---->消息驱动bean--Queue 消息的发送与接收(PTP 消息传递模型)
QueueSenderimport java.util.Properties;import javax.jms.BytesMessage;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.MessageProducer;im转载 2012-05-15 16:29:55 · 737 阅读 · 0 评论 -
EJB---->消息驱动bean--Topic 消息的发送与接收(Pub/sub 消息传递模型)
TopicSender.java (Topic 消息发送者)import javax.annotation.Resource;import javax.ejb.Remote;import javax.ejb.Stateless;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms转载 2012-05-15 16:30:22 · 817 阅读 · 0 评论 -
EJB---->依赖注入(dependency injection)
使用@EJB 注释,你可以将EJB存根对象注入到任何EJB 3.0 容器管理的POJO 中。如果注释用在一个属性变量上,容器将会在它被第一次访问之前赋值给它。package com.foshanshop.ejb3.impl;import com.foshanshop.ejb3.HelloWorld;import com.foshanshop.ejb3.Injection;import j转载 2012-05-15 16:26:31 · 1037 阅读 · 0 评论 -
EJB---->自定义安全域
把用户名/密码及角色存放在users.propertes 和roles.properties 文件,不便于日后的管理。大多数情况下我们都希望把用户名/密码及角色存放在数据库中。为此,我们需要自定义安全域,下面的例子定义了一个名为foshanshop的安全域,他采用数据库存储用户名及角色。安全域在[jboss 安装目录]/server/default/conf/login-config.转载 2012-05-15 16:28:21 · 710 阅读 · 0 评论 -
EJB---->安全服务的具体开发
使用Java 验证和授权服务(JAAS)可以很好地解决上面的问题,你可以用它来管理应用程序的安全性。JAAS具有两个特性:验证(Authentication)和授权(authorization),认证是完成用户名和密码的匹配校验;授权是决定用户可以访问哪些资源,授权是基于角色的。Jboss 服务器提供了安全服务来进行用户认证和根据用户规则来限制对POJO 的访问。对每一个POJO 来说,你可以转载 2012-05-15 16:27:51 · 652 阅读 · 0 评论 -
EJB---->JPQL 语言
Java Persistence API 定义了一种查询语言,具有与SQL 相类似的特征,JPQL 是完全面向对象的,具备继承、多态和关联等特性。1、命名查询你可以在实体bean 上预先定义一个或多个查询语句,减少每次因书写错误而引起的BUG。通常把经常使用的查询语句定义成命名查询,代码如下:@NamedQuery(name="getPerson", query= "FROM Pe转载 2012-05-18 08:52:57 · 603 阅读 · 0 评论 -
EJB---->多对多映射
多对多映射学生和老师就是多对多的关系。一个学生有多个老师,一个老师教多个学生。多对多映射采取中间表连接的映射策略,建立的中间表将分别引入两边的主键作为外键。EJB3 对于中间表的元数据提供了可配置的方式,用户可以自定义中间表的表名,列名。需要映射的数据表:Student.javapackage com.foshanshop.ejb3.bean;import java.io.Ser转载 2012-05-18 08:53:20 · 590 阅读 · 0 评论 -
EJB---->使用参数查询
命令参数的格式为:“: +参数名”private String NameQuery(){//获取指定personid 的人员Query query = em.createQuery("select p from Person p where p.personid=:Id");query.setParameter("Id",new Integer(1));List result = q转载 2012-05-18 08:53:06 · 855 阅读 · 0 评论 -
EJB---->Session Bean 的生命周期
EJB 容器创建和管理session bean 实例,有些时候,你可能需要定制session bean 的管理过程。例如,你可能想在创建session bean 实例的时候初始化字段变量,或在bean 实例被销毁的时候关掉外部资源。上述这些,你都可能通过在bean 类中定义生命周期的回调方法来实现。这些方法将会被容器在生命周期的不同阶段调用(如:创建或销毁时)。通过使有下面所列的注释,转载 2012-05-15 16:24:43 · 723 阅读 · 0 评论 -
EJB---->定时服务(Timer Service)
定时服务用作在一段特定的时间后执行某段程序,定时服务的开发过程与会话Bean 的开发过程大致相同,但比会话Bean 多了几个操作,那就是使用容器对象SessionContext 创建定时器,并使用@Timeout 注释声明定时器方法。下面定义一个每隔3 秒触发一次事件的定时器,当定时事件触发次数超过5 次的时候便终止定时器的执行。package com.foshanshop.ejb3.转载 2012-05-15 16:27:03 · 2406 阅读 · 1 评论 -
EJB---->改变sessionbean的JNDI名称
在Jboss 中要自定义JNDI 名称,可以使用@LocalBinding 和@RemoteBinding 注释,@LocalBinding 注释指定Session Bean 的Local 接口的JNDI 名称,@RemoteBinding 注释指定Session Bean 的Remote 接口的JNDI 名称,变Session Bean 的JNDI 名称package com.foshans转载 2012-05-15 16:24:04 · 699 阅读 · 0 评论 -
EJB---->拦截器(Interceptor)
拦截器(Interceptor)拦截器可以监听程序的一个或所有方法。拦截器对方法调用流提供了细粒度控制。可以在无状态会话bean、有状态会话bean 和消息驱动bean 上使用它们。拦截器可以是同一bean 类中的方法或是一个外部类。下面介绍如何在Session Bean 类中使用外部拦截器类。HelloChinaBean.javapackage com.foshanshop.ej转载 2012-05-15 16:26:01 · 755 阅读 · 0 评论 -
EJB---->实体bean
package com.foshanshop.ejb3.bean;import java.io.Serializable;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;impor转载 2012-05-15 16:32:25 · 666 阅读 · 0 评论 -
EJB---->实体Bean(Entity Bean) 持久化 和 persistence.xml 配置文件
持久化是位于JDBC 之上的一个更高层抽象。持久层将对象映射到数据库,以便在查询、装载、更新,或删除对象的时候,无须使用像JDBC 那样繁琐的API。在EJB 的早期版本中,持久化是EJB 平台的一部分。从EJB 3.0开始,持久化已经自成规范,被称为Java Persistence API。Java Persistence API 定义了一种方法,可以将常规的普通Java 对象(有时转载 2012-05-15 16:31:06 · 1503 阅读 · 0 评论 -
EJB---->实体bean的属性映射
一、不想让一些成员属性映射成数据库字段如果不想让一些成员属性映射成数据库字段,我们可以使用@Transient 注释进行标注,下面的fristName 属性将不会被持久化成数据库字段@Transientpublic String getFristName() {return "li";}二、映射枚举对象到数据库如果你想映射枚举对象到数据库就需要使用@Enumerated转载 2012-05-15 16:32:48 · 929 阅读 · 0 评论 -
EJB---->持久化实体管理器EntityManager
EntityManager 是用来对实体Bean 进行操作的辅助类。EntityManager 的获取可以通过@PersistenceContext 注释由EJB 容器动态注入,1、 Entity 获取find()或getReference()如果知道Entity 的唯一标示符,我们可以用find()或getReference()方法来获得Entity。@PersistenceCont转载 2012-05-15 16:33:18 · 861 阅读 · 0 评论 -
EJB---->Entity 的生命周期和状态、回调函数
一、四种Entity 的状态:1. 新实体(new)。Entity 由应用产生,和EJB3 Persistence 运行环境没有联系,也没有唯一的标示符(Identity)。2. 持久化实体(managed)。新实体和EJB3 Persistence 运行环境产生关联(通过persist(), merge()等方法),在EJB3Persistence 运行环境中存在和被管理,标志是在E转载 2012-05-17 23:13:26 · 1454 阅读 · 0 评论 -
EJB---->多表映射
实体的成员属性映射的字段分布在多张表中,如何处理?本例子的实体MainTable具有四个成员属性:id、name、address和postcode。其中与id和name映射的字段在MainTable表,与address和postcode属性映射的字段在Address表。需要使用@javax.persistence.SecondaryTable注释和@Column.table()属性转载 2012-05-18 08:53:13 · 633 阅读 · 0 评论 -
EJB---->一对多及多对一映射
一对多及多对一映射需要映射的数据库表orders和 orderitems 一项订单中存在一个或多个订购项 双向一对多关系,一是关系维护端(owner side),多是关系被维护端(inverse side)。在关系被维护端建立外键列指向关系维护端的主键列 Order.javapackage com.foshanshop.ejb3.bean;import java.i转载 2012-05-18 08:53:44 · 838 阅读 · 0 评论 -
EJB---->一对一映射
一个人(Person)只有唯一的身份证号(IDCard),Person 与IDCard 是一对一关系。需要映射的数据库表一对一关系需要在关系维护端(owner side)的@OneToOne 注释中定义mappedBy 属性。在关系被维护端(inverseside)建立外键列指向关系维护端的主键列Person.javapackage com.foshanshop.ejb转载 2012-05-18 08:53:32 · 541 阅读 · 0 评论 -
EJB---->Session Beans
一、 无状态Session Bean第一步:要定义一个会话Bean,首先需要定义一个包含他所有业务方法的接口。package com.foshanshop.ejb3;public interface HelloWorld {public String SayHello(String name);}第二步:实现上面的接口并加入两个注释@Stateless , @Remote,第一个转载 2012-05-15 16:23:19 · 555 阅读 · 0 评论