00:00
下边呢,我们一起来完成这个添加操作,这个添加呀,我们分为这样的三个小节,第一个小节显示添加的表单页面,同时呢需要使用GPA的二级缓存,具体实际上是用G跟spring data整合之后那个二级缓存。因为我们并不是单独使用GPA,第二个我们要使用AX去验证用户名的可用性,第三个完成添加,首先的话呢,我们来看显示页面跟使用GPA的二级缓存,第一个确定开发目标,现在我把这个程序呢运行一下看看效果。就是以前那个老程序哈,我们新的呢,还没写。大家注意看,我来点这个什么呀,我来点这个添加ADD new。
01:05
好了,表单页面显示了,注意我刷新。这个时候我刷新的话,我们发现它并没有再发对应的SQL语句去查询department,这说明它使用了二级缓存对吧。好的,这是我们的开发目标,下面的话呢,我们还是逐步来进行分析,看每一步我们都需要注意什么,首先是DAO层。我们需要干什么呀?需要查询所有的。Department。切。需要使用GPA的二级缓存,好了,这块有一个问题,如何来用这个二级缓存呢?
02:04
啊,我们先给它放这哈,我们一会一起来说层,然后的话呢,我们来看C位层,C位相对而言比较简单,调用do层的方法获取所有的。Department返回即可。字体没问题哈,然后呢,我们到了CTRL了。好,这个controller程呢,我们首先需要。调用service层,然后呢,获取所有的department并放入到request中,实际上还有一个需要做的,这个的话呢,我们等一等,还有一个什么呀,转发页面好的。
03:10
下一个看GSP页面,GSP页面呢,需要使用spring mvc的表单标签来显示表单页面,OK,这块有一个需要注意的地方。注意什么呀,那个form form标签。必须设置。一个什么属性来着,Model attribute属性是吧?然后以从request中获取对应的B,要求该B的属性和表单字段是一一对应的,否则就是说如果你不不去设置这个属性的话,那么表单不能够被正常的显示,那么我们现在是添加,所以说这CTRL这块我需要怎么样?
04:22
我需要创建一个新的employee对象放入到request中,键其键值对键和。表单的model attribute。属性值一致,OK以上的话呢,就是我们整个这个分析。看到了吧,开发目标,刚才我们看到了,我们现在的话呢,我们先来说这个。
05:04
Do层,我们希望查询所有的department,而且需要使用GPA的二级缓存。OK,我们来看一下代码,这个我给它关掉。我们用什么呀,我们来用我们这个项目。我们搞到我们的reposity,新来建一个。接口叫什么,Department?Extend gpaposit department。In control shift o,好的。啊,我们要来测试一下,这个时候那个二级缓存好用吗。我们等一下哈,看一下我们现在为那个二级缓存都做了什么。把这个application context打开,二级缓存呢,我加入了对应的价包。
06:06
是吧,最开始干的加入了对应的价包eh相关的。啊包加了,然后呢,这块也配了使用二级缓存,二级缓存的产品,以及我们要使用这个查询缓存,差了一个什么呀,差了一个eh k所对应的配置文件,我现在把这个配置文件给它copy过来。Java open source,找到let project ETC。Edge catch,我们就使用这个默认配置了啊,这个前面忘考了,Copy过了,好了,这是我们现在已经干的,然后呢,我们想测试。GPA reporty本来带的那个find方法,是不是会用那个二级缓存呢?那前提是department这块还需要去加一个什么呀?去加一个注解吧,诶,Catchable。
07:06
Cable。这里面我配置了GPA使用二级缓存的这个模式叫init,呃,Enable selective,就是说它只去缓存,添加了这个注解的实体类是吧?那现在它好用吗?我们来测试一下。打开public void test repstry的second level catch at test private department reposity。Departmentit等于CT x.get bity点。
08:07
List。Department department等于departmentit点。不叫get,叫什么呀?叫find all,是不是find out?我要给它获取两次,看一看,打印几次对应的circle呢?走起。高。诶,我们发现他打印了两次色口。这说明。没有使用那个二级缓存对吧。那么如何来用那个二级缓存呢?现在我们需要来。考量一下。需要来考量一下,那么我们首先测试一下在GPA里边是如何来用那个二级缓存的VO test GPA的second level。
09:20
GPA用的话呢,我需要用到entity manu factoryity manager factory。Entity manager factory等于Ctx.get bity manager。Manager factory.class好了,然后呢,我来获取我的ntt manager等于ctx点,不是ctx了什么呀?Ntt manufacty点。用完之后给它关一下close,然后呢,再获取一遍二级缓存,不就是这个效果嘛,对吧。
10:12
好的,上边写一个JPQ等于from department d。我来创建一个query。Query等于manager.query j pql,然后呢,我要获取一个list department department等于query get result list。好了,这个步骤是一样的。Control c这个拿掉。这个也拿掉。
11:01
嗯,默认情况下它是没有那个二级缓存的,所以说我们会看到这个circle是发送了两次。走起来。两次吧,那如何来用那个二级缓存呢?我们还记得括号里边有个方法就什么呀,设置。使用产品的这个基本的一个特性叫set hint,就设置net本身的一个特性,然后呢,有一个属性叫query his。一界B里边的哈点cable。是要被缓存的true,同时把这句话也放到这个里面来。好,再看效果。这个时候的话呢,这个二级缓存怎么样才起作用,对吧,起作用那么好了,那就是说我们需要使用自己定义的一个JPQL,然后呢,设置一个set hint才好用。
12:09
那我现在这个里边,我要是用它这个find off方法的话,肯定是不行的,那我来写一个get off方法吧,List department or获取全部的query。我们自己来定义,T pql d d at query his,告诉他我里边要去设置一些。GPA实现产品的属性qua his里边放的是什么呀?Out,斜杠,你看这个Y是什么?是很多个quary hint,那就是。大框括起来,At query hint,这里边有一个name,还有一个value name是谁呢?
13:14
内是就是刚才说的那个是吧。Qua kings。它把点catchable,把这个值设置为处,这个时候呢,我来调这个get方法,我们看一下效果。过来。好,这周期。哎,这个时候我们发现。Spring跟GPA整合我就可以干什么了,我就可以来使用这个二级缓存了,看到了吧?使用的方法就是。我们自己去定义一个方法,自己定义JPL,然后呢,用这个query进行设置,设置这个cable是true就可以了。
14:07
好了,二级缓存这个问题就解决了,那上边我们再来看service service呢,比较简单,直接写一个类就OK department service at service department。PS at auto public list department get all return departmentit.get all。加一个事物transactional,同时它是个什么呀?是一个只读的搞定。
15:00
搞定,然后呢,我们来看我们的handler。Public string,这实际上是去显示一个input,对吧,Request mapping。这应该是一个钙的请求,我要显示这个页面嘛,Y6等于它,同时告诉它,它是一个GA的请求,My method等于request method.get get,请求好了。DMP下边的input,我需要给我一个什么呀?给我一个map,往里边好放对应的建筑,对啊,Object map。Private department。
16:02
Service at auto map.department department service.get all,还有一个是不是put employee new employee。搞定好下面的话呢,我们去写这个铺的页面。我把这个往里面移一下,改个名叫。首先,我需要使用C的表单标签。Form。这也改为这个干掉form form action method post。
17:07
Action呢?我去的实际路径应该是page context。是什么呀?是EP,是不是我们看一眼。我这块是怎么写的,Handler这块是EP get请求写的这个页面。Post请求帮我添加新的employee,所以说请求就是这样的,没问题。好了,来写一个last name form。Input last name第二。Email form。Input。Email,第二还有一个。
18:01
First form错了吧,Input。Boss。这样一个department,这个复杂一点,Form应该是一个select。Pass department.id对吧,然后是it。Departments department。这样一个value ID,第二,Input type summit value summit。OK,写完写完之后的话呢,我尝试着来显示一下,大家说它能显示成功吗?你可能注意到了是吧,我是不是没有设置这个model tribute呀,等于说这个值必须跟handler的这个什么一致。
19:19
这个建议值叫employee,默认值是啥呀?是command是吧?默认值是command,好了,我来写一个超链接,BB2A cramp。ADD new employee。走起看效果。走。爱的new employee。好了,这个页面呢,没问题,这是我们的项目哈,我们再刷新一下。
20:03
大家看二级缓存是不是起作用了?对吧,起作用了,那我如果要是把这个注解去掉的话。他就将不起作用对吧。看一下,走起。刷新一次,再刷新又一次吧,所以说我们做的是没问题的,行,这就是我们完成添加的第一个步骤,这个步骤呢叫显示页面使用GPA2级缓存。下一个步骤,用Ajax来验证用户名的可用性。下节课说。
我来说两句