首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用泛型参数覆盖EJB 3会话bean方法 - 如果可能的话?

在EJB 3中,会话Bean已经被替换为实体Bean和本地Bean。泛型参数覆盖EJB 3会话Bean方法是通过使用泛型参数来实现的。以下是一个简单的示例,说明如何使用泛型参数覆盖EJB 3会话Bean方法:

  1. 定义一个泛型接口:
代码语言:java
复制
public interface GenericDao<T> {
    T findById(Long id);
    void save(T entity);
    void update(T entity);
    void delete(T entity);
}
  1. 实现泛型接口:
代码语言:java
复制
@Stateless
public class GenericDaoImpl<T> implements GenericDao<T> {
    @PersistenceContext(unitName = "my-pu")
    private EntityManager entityManager;

    @Override
    public T findById(Long id) {
        return entityManager.find(getEntityClass(), id);
    }

    @Override
    public void save(T entity) {
        entityManager.persist(entity);
    }

    @Override
    public void update(T entity) {
        entityManager.merge(entity);
    }

    @Override
    public void delete(T entity) {
        entityManager.remove(entity);
    }

    private Class<T> getEntityClass() {
        Type type = getClass().getGenericSuperclass();
        ParameterizedType paramType = (ParameterizedType) type;
        return (Class<T>) paramType.getActualTypeArguments()[0];
    }
}
  1. 使用泛型接口:
代码语言:java
复制
@Stateless
public class MyService {
    @EJB
    private GenericDao<MyEntity> myEntityDao;

    public MyEntity findById(Long id) {
        return myEntityDao.findById(id);
    }

    public void save(MyEntity entity) {
        myEntityDao.save(entity);
    }

    public void update(MyEntity entity) {
        myEntityDao.update(entity);
    }

    public void delete(MyEntity entity) {
        myEntityDao.delete(entity);
    }
}

在这个示例中,我们定义了一个泛型接口GenericDao,并实现了该接口。我们使用@PersistenceContext注解注入EntityManager,以便在实现中使用。我们还定义了一个MyService类,该类使用GenericDao接口。

通过使用泛型参数,我们可以覆盖EJB 3会话Bean方法,从而实现更灵活的代码结构和更好的可重用性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

初识JAVA:JAVA最全基础知识复习(超详尽!!值得收藏!)

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。...如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。...equals()和"=="方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。...EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。...78、EJB的几种类型 会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless

1.6K10

EJB学习一

说明:客户端调用EJB一般使用远程调用,因为WEB服务器和EJB服务器可能位于两台机器; EJB调用EJB一般使用本地调用,因为它们通常都位于同一个EJB容器内。...2、有状态的session bean的“激活”和“钝化” 容器如果按照有状态会话Bean的设想来实现的话。那么有限的资源如:内存、数据库连接等就会被耗费很多。...2、一个实体Bean类可以映射一个关系表的定义。这个类的一个实体将会映射那个表中的一行。实体Bean类提供一些访问数据和操作数据的简单方法。...2、数据库无关的Bean 如果我们要开发一个可重用的组件,我们很可能不知道Bean使用者将要使用什么样的数据库存储。在CMP中,实体Bean和它的持久化表现完全分开。...您要使用下列 EJB-QL: SELECT OBJECT(g) FROM UserGroup g WHERE g.name = ?1 ?1 指的是方法的第一个参数如果有两个参数,那么 ?

72920
  • 关于Java持久化相关的资源汇集:Java Persistence API

    问题:EJB专家团队是如何摆脱事务描述符的? 回答:在会话bean和消息驱动bean中,可以通过描述符和注释来控制事务的行为。...会话bean还是部署单元和公用服务边界。因此,会话bean是定义所有业务代码的地方。换而言之,会话beanEJB容器关注的,而JPA实现是在会话bean使用的。...也就是,如果将您的应用程序从EJB2会话bean转换到EJB3会话bean,但是完全没有修改持久化机制,可能不会发现重大差别。...这是因为EJB3规范对会话bean部分的大多数更改着重实现编程模型的改进。...或者,如果应用程序的其余部分主要使用JPA,则适用的话可能希望使用JPQL的大批量更新功能来进行更新。 问题:如果不先将数据加载到内存中,是否可以执行大批量更新?

    2.5K30

    程序员的25大Java基础面试问题及答案

    背景 自定义输出 自动生成输出 打印对象组 数组 集合 23.如何理解和使用Java中的增强for循环foreach? 24.在java中为什么 1/3 == 0?...(无论如何都会在运行时删除)。...现在,如果Java从一开始就具有,并且没有LinkedList最初在具有之前创建的类型(例如),则它可能已经做到了,这样类型的构造函数会自动从左侧推断出其类型参数-尽可能在作业的另一侧。...但事实并非如此,为了向后兼容,必须对原始类型和类型进行不同的处理。这使得他们需要采取一种稍微不同但同样方便的方式来声明对象的新实例,而不必重复其类型参数……菱形运算符。...它使你可以与使用原始类型几乎相同的工作来保持的安全。 我认为关键要理解的是,原始类型(不带)不能与类型相同。声明原始类型时,不会获得任何好处和的类型检查。

    17020

    EJB学习笔记

    如果要让stateful Session Bean能够同时服务多个客户,就要使用Swapping。 钝化:将会话Bean中客户状态钝化到存储设备(swap out)。...激活:将存储设备中的客户状态读回到会话Bean中(swap in)。 使用有状态会话Bean如何维护客户状态?...1、何时需要使用有状态的会话Bean? 需要跨多个方法完成某个业务处理流程,并且需要保持客户端状态。 2、有状态会话Bean能否实现pooling?...作用: (1) 描述服务是什么,服务提供的操作(方法名,方法参数,返回值,数据类型等); (2) 如何访问该服务→binding (3) 服务访问的地址→service Banding:...回调方法可以定义在Entity内部,也可以定义在单独的监听器类中。如果定义在监听器里,回调方法必须带一个参数,即要监听的实体。

    1.1K30

    JAVA相关基础知识复习(超详尽!!值得收藏!!)

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。...如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。...equals()和”==“方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。...EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。...78、EJB的几种类型 会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless

    81100

    Spring框架的演变

    其次,该描述中轻量级的,因为只需要对应用程序代码进行很少的更改(如果的话)就可以获得Spring Core所带来的好处。如果想要在任何时候停止使用Spring,那么你会发现可以很容易做到。...Spring 3.0.x 这是基于Java5的第一个版本,旨在充分利用Java5的功能,如、可变参数和其他语言改进。该版本引入了基于Java的@Configuration模型。...目前已经对框架模块进行了修改,分别针对每个模块JAR使用一棵源代码树进行管理。 如下图所示的抽象描述 ? ➣ 支持Java5功能,例如、可变参数以及其他改进。...➣ 能够使用@Valid来注解Spring MVC @RequestBody 控制器方法参数。 ➣ 能够使用@RequestPart来注解Spring MVC 控制器方法参数。...➣ 支持RestTemplate和@RequestBody参数类型。 ➣ 支持Jackson JSON2。 ➣ 支持Tiles 3

    91920

    浅析“远程对象调用”

    因为每一个数据操作,都需要去从他们这里读取数据,然后再回写结果(如果有数据修改操作的话)。...[image.gif] 由于“缓存—数据库”模块是有状态的,一般来说还很难简单的做分布式部署,因为如果随机分布数据的话,逻辑模块可能就会找不到状态所在的缓存进程。...EJB规范把远程对象定义为三种:无状态会话Bean,有状态会话Bean,消息驱动Bean。这意味着EJB容器对于EJB对象的生命周期是有管理的。...其中无状态会话Bean和消息驱动Bean的声明周期是类似的,都是来一个请求(消息驱动的意思是每来一个JMS消息),就可能new一个Bean对象。...而最特别的是“有状态会话Bean”,容器会根据客户端的会话状态(和客户端的context对象对应),来保持Bean对象,也就是说,每个客户端context对应一个有状态Bean

    2.7K00

    EJB 学习笔记

    EJB 学习笔记 1、ejb 基础知识 (1) 无状态会话bean 不保存客户机的会话状态 优点:使用小量的实例即可满足大量的客户。每个实例都没有标识,相互之间是等价的。 等?...如果主失败,辅助变为主,然后自动选择别的可用的服务器作为辅助。 遗憾: 很难在servlet 和jsp中用好有状态会话bean。...** 记住是在调用ejb.create()方法前调用 setUserTransaction() 方法 利用对 UserTransaction 的引用会话可以使用 begin() 、commit()、rollback...相当于数据的insert 方法。 2)remove()方法相当于数据库的delete操作。 3)finder()方法,使客户能够查询和接收满足查询条件的实体bean的引用。...尽量使用容器管理事务而不要采用bean管理事务的方式. (3) ejb遇到错误,需要强制事务回滚.

    54720

    EJB的简单介绍和使用

    不过,顺便需要提到的是,如果两个程序使用的是不同语言平台,如一个是C,一个是Java,业界中也提出了一些方法来解决数据交换问题,如WebService、CORBA等。读者可以参考相关文献。...根据生命周期的不同,又可以分为: (1) Stateless Session Bean: 无状态会话Bean,不存储用户相关信息,一般说来,在服务器端,一个Bean对象可能为很多客户服务,如图17-3...所示: 图片 图17-3 无状态会话Bean使用 由于一个Bean对象可能为多个客户服务,因此,一般不在对象内保存某个客户的状态,保存也没有意义。...3. Message Driven Bean:消息驱动Bean,是一种异步的无状态组件,和无状态会话组件具有相似性,是JMS消息的消费者,可以和JMS配合起来使用。...客户端向服务器发起连接,在服务器上寻找相应的JNDI名称,如果找到,返回一个对象。 2. 客户端将该对象强制转换为接口类型。 3. 客户端调用接口中的方法,实际上调用了服务器端EJB内的方法

    4.2K20

    weblogic EJB 学习

    EJB 学习笔记 1、ejb 基础知识 (1) 无状态会话bean 不保存客户机的会话状态 优点:使用小量的实例即可满足大量的客户。每个实例都没有标识,相互之间是等价的。 等?...如果主失败,辅助变为主,然后自动选择别的可用的服务器作为辅助。 遗憾: 很难在servlet 和jsp中用好有状态会话bean。...** 记住是在调用ejb.create()方法前调用 setUserTransaction() 方法 利用对 UserTransaction 的引用会话可以使用 begin() 、commit...相当于数据的insert 方法。 2)remove()方法相当于数据库的delete操作。 3)finder()方法,使客户能够查询和接收满足查询条件的实体bean的引用。...bean类实现了home方法和远程接口中的业务方法,home方法是针对匿名实例的方法不应使用有关的主健值.

    1.2K20

    EJB学习日志

    com.ejb.HelloWord; @Stateless // 声明这个bean是无状态的会话bean Stateless 声明这个bean是有状态的会话bean 两种状态的会话bean 代码没多大区别...但在调用的时候 他们俩个在对bean的管理的技术是不一样的 无状态bean使用实例池技术管理bean 有状态bean使用激活(activation)管理bean /** * @Remote...* 如果在本地用 EJB(确保客户端与 EJB 容器运行在同一个 JVM),采用 Local 接口访问 EJB 优于 Remote 接口, * 因为 Remote接口访问 EJB 需要经过远程方法调用...应用 如果没有 就是EJB没发不好 如果的话 就要看客户端的环境设置 和代码 还有就是把jboss的包全部在重新导入一遍 第二天: EJB注解 @EJB EJB实现的接口 实例名称 如...如果一个接口被不在同一个包 但是EJB的类名是一样的 又该怎么注解呢 不过这种事情貌似不怎么会发生 蛋疼的问题 嘎嘎 如果要注解jboss自己内置的EJB的话 就要是使用@resource 命令

    58220

    Java面试题整理

    产生一个Class数组,说明方法参数 通过Class对象及方法参数得到Method 通过method.invoke(实例,参数值数组)唤醒方法 23、如何将数值字符转换为数字(Integer,...如果有输出参数要注册说明是输出参数。 4、Java中访问数据库的步骤?...恢复视图->应用请求值->校验->更新模型->调用应用程序->呈现响应 3如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?...Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless...Session Bean 的实体来执行这个 method.换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance

    2K10

    浅析远程对象调用

    因为每一个数据操作,都需要去从他们这里读取数据,然后再回写结果(如果有数据修改操作的话)。...由于“缓存-数据库”模块是有状态的,一般来说还很难简单的做分布式部署,因为如果随机分布数据的话,逻辑模块可能就会找不到状态所在的缓存进程。...EJB规范把远程对象定义为三种:无状态会话Bean,有状态会话Bean,消息驱动Bean。这意味着EJB容器对于EJB对象的生命周期是有管理的。...其中无状态会话Bean和消息驱动Bean的声明周期是类似的,都是来一个请求(消息驱动的意思是每来一个JMS消息),就可能new一个Bean对象。...而最特别的是“有状态会话Bean”,容器会根据客户端的会话状态(和客户端的context对象对应),来保持Bean对象,也就是说,每个客户端context对应一个有状态Bean

    2K10

    j2EE是什么_j2ee体系结构

    下图表明了一个enterprise bean如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。...会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录....消息驱动 bean 结合了会话bean 和 JMS的消息监听器的特性, 允许一个业务层组件异步接收JMS 消息....EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。...它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。 Java IDL/CORBA: 在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。

    2.4K30

    Java面试葵花宝典打印版【6】

    1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等),2.不能操作awt,3.不能实现服务器功能,4.不能对静态属生存取,5.不能使用IO操作直接存取文件系统,6.不能加载本地库...75、remote接口和home接口主要作用 remote接口定义了业务方法,用于EJB客户端调用业务方法。...EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。...78、EJB的几种类型会话 (Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean会话Bean又可分为有状态(Stateful)和无状态(Stateless...80、如何给weblogic指定大小的内存?

    23010

    重点来了:事务一致性的深入研究&EJB的全生命周期 | 从开发角度看应用架构5

    CMT中,不允许在单个bean方法中嵌套事务。开发人员可以使用称为“事务属性”的注释来覆盖方法级别的默认事务行为。...如果需要显式控制事务流,则必须使用Bean管理的事务。另外,使用CMT的EJB不能使用javax.transaction.UserTransaction接口。...如果使用@TransactionAttribute在类级别注释EJB,则指定的属性适用于EJB中的所有方法使用@TransactionAttribute注解特定方法仅将该属性应用于该方法。...3注入UserTransaction对象。 这用于在此EJB中开始,提交和回滚事务。 4Begin开始交易。 5如果所有方法都没有任何错误地成功执行,请提交事务。...6如果由于某种故障而出现异常,请执行回滚事务。 六、实验验证:配置Bean管理事务(BMT) 在本实验中,我们使用无状态EJB并将其更新为使用Bean管理的事务。

    84140

    了解 Spring Data JPA

    它一改之前 EJB 2.x 中实体 Bean 笨重且难以使用的形象,充分吸收了在开源社区已经相对成熟的 ORM 思想。另外,它并不依赖于 EJB 容器,可以作为一个独立的持久层技术而存在。...Java持久化规范,是从EJB2.x以前的实体Bean(Entity bean)分离出来的,EJB3以后不再有实体bean,而是将实体bean放到JPA中实现。...该接口使用,需要为其提供两个类型:第一个为该接口处理的域对象类型,第二个为该域对象的主键类型。...开发者只是多写了 "Crud" 四个字母,即刻便为域对象提供了开箱即用的十个增删改查方法。 2.使用 CrudRepository 也有副作用,它可能暴露了你不希望暴露给业务层的方法。...如果用户觉得有必要,可以在接口方法使用 @Transactional 显式指定事务属性,该值覆盖 Spring Data JPA 提供的默认值。

    2K20

    J2EE全面介绍

    下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。...会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录. ...enterprise bean可从池中迅速获取连接。在bean释放连接之可为其他bean使用。 ...3.       EJB(Enterprise JavaBean): J2EE技术之所以赢得某体广泛重视的原因之一就是EJB。...EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。

    1.1K21
    领券