浏览 3002 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
||||
---|---|---|---|---|
作者 | 正文 | |||
发表时间:2008-10-25
如果用过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,大功告成 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||
返回顶楼 | ||||
发表时间:2008-10-25
说句实在话,完全不知所云。
|
||||
返回顶楼 | ||||