`
Gavin.Chen
  • 浏览: 324925 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

用JAVA范型模拟EJB3的EntityManager的find方法

阅读更多

 如果用过EJB3的人,肯定也知道EJB3有一个EntityManager的类,如下代码

@Stateless
@Remote({TestRemote.class})
@RemoteBinding(jndiBinding="TestSessionBeanRemote")
@Local({TestLocal.class})
@LocalBinding(jndiBinding="TestSessionBeanLocal")
public class TestSessionBean implements TestRemote, TestLocal
{
    @PersistenceContext(unitName="test")
    private EntityManager entityManager;
 
    public void test()
    {
    }
}

 

 

   以我的理解,这个EntityManager就是EJB3进行实体Bean持久化相关的操作类,它有着EJB3进行持久化操作的所有方法,如查找实体find方法, 实体更新或插入merge方法, 实体移除remove方法,还有就是创建HQL查询的createQuery方法等等等等。

  其中find方法用得很多,其中find方法的api定义为

<T> T
find(Class<T> entityClass, Object primaryKey)
          Find by primary key.

  它的作用是,用primary key查找实体Bean,你传一个实体Bean的Class和它的primary key进去,然后马上可以得到这个实体Bean类,多方便,不用超超类Object进行返回,不用进行Case强转,方便,也不容易出错。

  但实体Bean都是自己写的,众多不同的实体Bean都有自己的类,怎么才能让这个find能够共用呢?我们可以看到它出现了<T> T之类的,那么,这个T倒底是什么呢?它就是范型了。关于JAVA范型,大家可以参考我在此篇文章之前发布的另外一篇文章“JAVA范型攻略篇”,是一篇从网上转载下来的文章,写得挺详细的,有很多例码,大家可以去看一下。

  那么现在我们就照着EntityManager find方法的API定义,写一个测试吧.

   

public <T> T find(Class<T> entityClass, Object primaryKey)
    {

        //下面我只是简单地用影射模拟返回
        Object object = Class.forName(entityClass.getName()).newInstance();

        //中间还有一堆用影射设值的,这里我就不详谈了,大家有空多看看JAVA影射方面的知识吧

        return (T) object;
    }

 

OK,大功告成

分享到:
评论
1 楼 Norther 2008-10-25  
说句实在话,完全不知所云。

相关推荐

    Java 范型Java 范型.doc

    Java 范型Java 范型

    Java 范型攻略篇

    Java范型的核心概念是参数化类型(Parameterized Types),即允许在类、接口或方法中声明类型参数,从而在使用这些结构时可以指定具体的类型。例如,`ArrayList`在Java 1.5中被重构为`ArrayList&lt;T&gt;`,这里的`T`就是...

    JAVA范型指南中文版

    - **方法级别的泛型**:除了在类或接口中定义泛型,还可以在方法签名中使用。例如,`public &lt;T&gt; void printList(List&lt;T&gt; list)`定义了一个接受任何类型列表的方法。 - **类型推断**:Java编译器可以根据方法调用的...

    java范型[参考].pdf

    Java泛型是Java 5版本引入的一个重要特性,极大地增强了代码的类型安全性和效率。泛型允许我们在编写类、接口和方法时指定一种或多种类型参数,使得代码能够处理多种不同类型的对象,同时在编译时进行严格的类型检查...

    java范型[参照].pdf

    Java泛型是Java 5版本引入的一个重要特性,极大地增强了代码的类型安全性和可读性。泛型允许我们在编写代码时指定容器(如List、Set、Map等集合类)能够存储的数据类型,从而避免了不必要的类型转换,并在编译时期就...

    java 泛型类的类型识别示例

    3. **泛型方法和类型参数**:在泛型方法中,我们可以用类型参数来表示操作的类型,然后在方法内部使用`Class`对象来获取更多信息。例如: ```java public &lt;U&gt; void process(U value) { Class&lt;U&gt; valueType = ...

    Java 泛型(Generics)使用说明

    本例子说明演示了Java范型使用的动机、范型类的使用、范型方法的使用,以及范型的缺陷:类型擦除(type erasure).因为,现在Java的反射机制不能确定集合中的对象类型! 在实际应用中,如果能够灵活应用范型和反射...

    Java 实现泛型List

    Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。

    java范型视频

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一...这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。

    java范型学习

    Java 泛型是一种强大的语言特性,它在...掌握Java泛型对于高效、安全地使用Java集合框架至关重要,它也广泛应用于自定义数据结构和算法实现中。通过深入理解并熟练应用泛型,开发者可以写出更加健壮、易维护的代码。

    用Java Socket实现一个简单的基于P2P范型的即时聊天系统。

    在本文中,我们将深入探讨如何使用Java的Socket编程来实现一个简单的基于P2P(Peer-to-Peer)范型的即时聊天系统。P2P网络架构允许每个节点既是客户端也是服务器,这种模式使得数据传输更加分散,提高了系统的可扩展...

    Java程序设计范型和枚举PPT教案学习.pptx

    范型是Java SE 5.0引入的一个特性,它允许在类、接口和方法中使用类型参数,从而实现泛化的数据容器。在Java中,范型也被称为参数化类型。例如,`HashMap, Value&gt;`就是一个范型类,其中`Key`和`Value`是类型参数,...

    一个很好的范型立例题

    Java范型是Java编程语言中的一个重要特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的重用性和安全性。范型在Java中引入的主要目标是增强类型安全,减少强制类型转换,并帮助开发者编写更清晰、更易于...

    范型程序设计与 STL.pdf

    3. 算法(Algorithms):如sort、find、copy等,这些算法可以对容器中的元素进行操作。它们接受迭代器作为参数,可以在不同的容器上执行,不依赖容器的具体实现。 4. 函数对象(Function Objects)或谓之适配器...

    范型参考 (1).java

    范型参考 (1).java

    范型参考 (2).java

    范型参考 (2).java

    C++多范型设计

    《C++多范型设计》是一本深入探讨C++编程语言中模板技术的专著,由知名软件工程师James O. Coplien撰写,并由鄢爱兰、周辉等翻译成中文版,ISBN号为9787508318240。这本书的核心主题是C++中的泛型编程,它是C++编程...

    论文研究-消息传递范型与C/S范型双范型的主数据管理机制 .pdf

    本文提出的基于消息传递范型和客户机/服务器(Client/Server,简称C/S)范型双范型的主数据管理机制,能够有效解决MDM面临的问题。 消息传递范型是计算机科学中的一个基本概念,用于描述进程间通信的方式。在这范型...

    java 带两个类型参数的泛型

    在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的灵活性和可复用性。当我们谈论“java带两个类型参数的泛型”时,这意味着我们正在处理一个泛型类或泛型方法,...

Global site tag (gtag.js) - Google Analytics