如果用过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定义为
它的作用是,用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,大功告成
分享到:
- 2008-10-25 13:40
- 浏览 1524
- 评论(1)
- 论坛回复 / 浏览 (1 / 3002)
- 查看更多
相关推荐
Java 范型Java 范型
Java范型的核心概念是参数化类型(Parameterized Types),即允许在类、接口或方法中声明类型参数,从而在使用这些结构时可以指定具体的类型。例如,`ArrayList`在Java 1.5中被重构为`ArrayList<T>`,这里的`T`就是...
- **方法级别的泛型**:除了在类或接口中定义泛型,还可以在方法签名中使用。例如,`public <T> void printList(List<T> list)`定义了一个接受任何类型列表的方法。 - **类型推断**:Java编译器可以根据方法调用的...
Java泛型是Java 5版本引入的一个重要特性,极大地增强了代码的类型安全性和效率。泛型允许我们在编写类、接口和方法时指定一种或多种类型参数,使得代码能够处理多种不同类型的对象,同时在编译时进行严格的类型检查...
Java泛型是Java 5版本引入的一个重要特性,极大地增强了代码的类型安全性和可读性。泛型允许我们在编写代码时指定容器(如List、Set、Map等集合类)能够存储的数据类型,从而避免了不必要的类型转换,并在编译时期就...
本例子说明演示了Java范型使用的动机、范型类的使用、范型方法的使用,以及范型的缺陷:类型擦除(type erasure).因为,现在Java的反射机制不能确定集合中的对象类型! 在实际应用中,如果能够灵活应用范型和反射...
Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。
3. **泛型方法和类型参数**:在泛型方法中,我们可以用类型参数来表示操作的类型,然后在方法内部使用`Class`对象来获取更多信息。例如: ```java public <U> void process(U value) { Class<U> valueType = ...
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一...这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
Java 泛型是一种强大的语言特性,它在...掌握Java泛型对于高效、安全地使用Java集合框架至关重要,它也广泛应用于自定义数据结构和算法实现中。通过深入理解并熟练应用泛型,开发者可以写出更加健壮、易维护的代码。
在本文中,我们将深入探讨如何使用Java的Socket编程来实现一个简单的基于P2P(Peer-to-Peer)范型的即时聊天系统。P2P网络架构允许每个节点既是客户端也是服务器,这种模式使得数据传输更加分散,提高了系统的可扩展...
范型是Java SE 5.0引入的一个特性,它允许在类、接口和方法中使用类型参数,从而实现泛化的数据容器。在Java中,范型也被称为参数化类型。例如,`HashMap, Value>`就是一个范型类,其中`Key`和`Value`是类型参数,...
Java范型是Java编程语言中的一个重要特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的重用性和安全性。范型在Java中引入的主要目标是增强类型安全,减少强制类型转换,并帮助开发者编写更清晰、更易于...
3. 算法(Algorithms):如sort、find、copy等,这些算法可以对容器中的元素进行操作。它们接受迭代器作为参数,可以在不同的容器上执行,不依赖容器的具体实现。 4. 函数对象(Function Objects)或谓之适配器...
范型参考 (1).java
范型参考 (2).java
《C++多范型设计》是一本深入探讨C++编程语言中模板技术的专著,由知名软件工程师James O. Coplien撰写,并由鄢爱兰、周辉等翻译成中文版,ISBN号为9787508318240。这本书的核心主题是C++中的泛型编程,它是C++编程...
本文提出的基于消息传递范型和客户机/服务器(Client/Server,简称C/S)范型双范型的主数据管理机制,能够有效解决MDM面临的问题。 消息传递范型是计算机科学中的一个基本概念,用于描述进程间通信的方式。在这范型...
参考:我眼中的Java-Type体系(1) 我眼中的Java-Type体系(2) 秒懂Java类型(Type)系统 Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现...