EJB2.0雨夜教程之四
今天讲解一下BMP还是老样子.最好先看..不是了..是希望大家先看另一篇文档.
看完再看录像.就是这篇.
我把bmp分析的还是很好的了..= =至少我是这样认为.
如果有不清楚的地方再结合书上看看吧.或者官方.
下面直接做了.
首先需要有表.我已经建好了.
打开JBuilder.
直接建工程了..大家看好..
我们从表来做..
=v=别问为什么啊..让你先看那篇文档了..
当然了..weblogic里也是需要配置一下的..先带大家看下..届时我会有文档给大家的.
在weblogic里要配置连接池和JNDI..
看到了吧.这个Night就是我们用的连接的JNDI.
异常出来了...为什么有这个异常呢..
大家看我怎么改吧..明白了...这个是我给大家提个醒啦..呵呵.
通过之前的文档大家首先应该建立一个概念.
这个就是我们的bean中的方法都是做什么的.
他们之中应该有怎样的代码.
下面我们一点一点来写.
1,写一个连接数据源的方法.(注意需要的包要加进来.)
晕..api消失了..不过没关系..偶记得^_^
= =修复了一下api..goon...
很多地方的错误我都给大家演示了一下..都是非常容易错的地方.
明确ejbCreate()方法是做什么的.我们就要来修改一下..
就这样么?非也..注意看这篇.ejbPostCreate()要和ejbCreate的方法参数相同.
参数一样了..也填好了.
我们要写代码了.
创建一个数据.那么当然就是用insert了.不过首先我们还要在一个方法里初始化我们的数据源.
看到了吧..在这个方法里我们初始化.
我刚刚所做的是一个偷懒的方式.不过却是非常实用的.
这些关闭工作其实都应该在try,catch,finally这个finally的方法里写的.不过咱们这里是讲解就省略了
在bean中修改了.ejbCreate()我们也需要在home中修改.为什么??=v=看偶之前的文档..
这样我们的ejbCreate()方法就ok了..
我们测试一下吧.
这里引出了2个问题..
第一个是编译的问题.我装载部署了ejb在weblogic中然后编译的时候出现问题.这个因为在windows下.
需要先停止一下在weblogic的ejb服务.才可以编译.
第二个问题是刚刚的建立测试类的时候找不到ejb.这个因为我们的ejb是local的.现在修改他.
这样就ok了..
同时检查ejbCreate();
哈哈..这个问题就是make一下就ok的..
突然发现问题会出现很多哦..
远程调用都要有异常处理.
但处理应该分着来的.不过偷懒就是在main方法后面直接抛个大的..省去了麻烦.
同时方便大家看代码.
这里大家又看到一个错误.就是说BMP和CMP的名字上面的冲突.
发现下一个错误是因为我们的ejbCreate()返回是null..这个方法需要返回值..id.
ok..检查一下我们的数据库..
很麻烦吧..调了这么久才ok..
下面我们来进行下步.
我们这样写得到的是创建一条新的记录.年龄为1.
然后我们给它set方法重新定义为33岁.
看看结果吧.我们发现它还是1岁.
再来看.
这样我们可以直接看到是不是修改了年龄对吧..看看会得到什么结果.
看33岁..哈哈别着急..看看数据库..发现了吧还是1岁.
这个是为什么呢??
我们可以理解为这是在容器中的ejb对象的东西.也可以理解就是内存.
并没有修改数据库.
那么我们怎样才能做到更新数据库呢.
这就需要看到了吧..我们要在store里写东东了..^_^
这个方法是update()我们来看看能否ok.来看数据库了..
明白了吧..呵呵..
下面我们来介绍这个findByPrimaryKey()这个方法返回的是主键.
我们的load就是通过它的返回值来读取的.
下面我们写load.
用这个方法简单吧..直接把需要的引入了.
========================第一次录制失败..= =磁盘缓存不够..咱们重头来=======================
基本和上面一样...
直接操作了...直接写了.把包引入.注意看.
下面写ejbCreate().= =我写的有些快..大家要是看不清楚可以多看几次或者用录像的控制条来看.
不然磁盘容量再不够偶就要再录一次了..=v=粉不容易滴..
我们这里观察2个地方.
第一个是创建.会为数据库添加一条记录.
第二个是我们用set给他的年龄重定义.
然后我们把它输出出来.
为什么stop那个服务.看上面吧= =好多问题我在第一遍的时候都写了..下面就不说了哦..
看到了吧我们的年龄还是41岁.直接在上面找答案..谢谢.
我们解决它.现在.
我们重新输入一个试试.看这次能不能通过set方法给他修改.
这次明白了store的作用.
我们下面写..
下面我们来介绍这个findByPrimaryKey()这个方法返回的是主键.
我们的load就是通过它的返回值来读取的.
下面我们写load.
用这个方法简单吧..直接把需要的引入了.
= =直接复制过来了..上次就是在这个地方卡的..
下面我们通过查找一条记录然后输出出来..
就这个第五条吧..
ok吧..呵呵..那么我们通过set给他update来看看.
呵呵搞定了...
对表有什么操作呢..增删改查.无非就这么点东西.我们完成了
增.也就是cereate.
改.也就是set.
查.就是那个findByPrimaryKey.
删.就是我们的remove..现在来做.
我们还是拿这个第五条来做.
这个地方再重点说下.我们对数据库的一条记录做的操作都是要先找到它.
然后才对其操作的.
所以改的时候自然也是先find...然后remove.
ok删掉了..我们对单表的增删改查就ok了.
下面我们介绍finder..=v=先把这段录像搞定吧..我怕空间又不够了..
ok继续录制..
先不讲finder..看下我们的事务控制..看那边..
我们现在在bean中添加些输出语句.
一个get()我们看看调用了什么
一个set()我们又调用了什么.
我们现在在客户端那边写了一个find和2个get.运行看吧.
看到了吧一个get会调用2个方法的就是我们的load和store.
那么怎么来控制呢..我们需要在客户端加上事务控制.
那边的文档说很清楚了.这里不说了.
现在这边是6个.
我们运行.通过事务控制我们只会调用1次load和store
ok了.这个就是我们的事务控制了.
下面说finder.
它的作用就是查找记录.或者根据某条件查找一群记录.返回一个记录集合
我们写年龄为20的finder.
我们写完这个之后会发现系统给我们多生成了一个方法.从ddsource里删掉query这个标签就ok了.
编译通过.
刚才又出现了一个特别错误.就是输出有问题.但是却没有任何的异常提示.
包括weblogic的控制台也没错误.JBuilder里也编译全都ok.
这个怎么回事呢??
=v=人品问题..开玩笑..大家重启weblogic就ok了..这就是时间长了什么错误都能给你冒出来..
没问题吧..
不要着急其他的..
我们再来分析下控制台那边的load和store.看看出现了什么情况.14条.
好了我们运行一下看.晕又来了..这种错误就是重启就ok的.
看控制台.通过事务的控制我们应该看到的是一个load和一个store.
发现问题了吧.有两次load和两次store.这个问题在另一篇有介绍了.这里仅仅是带大家看效果.
我们下面写一个方法查找最大的年龄.
这个我们就没有用finder方法用一个普通的方法来作.
=v=晕..偶写错语句了..写的是最大id..错就错吧..反正都写了..就不改啦..如果修改的话把bean里的sql语句改下
就ok了..
下面再补充一个数据源的引用配置..
很简单就不多说了..直接看.
这样以来我们如果要修改连接的话就只需要在引用配置那边修改一下数据源就ok了代码不用改.
看一样运行.
主键类的选择..注意看.
看到了吧就是那个地方选..BMP到此结束.. 继续顶。
页:
[1]