00:00
说一说spring如何整合GPA?这一小节只讲一小节。那首先的话呢,咱们说一下spring整合GPA整合什么。两方面。第一方面。让spring去管GPA的entity manufacture。第二方面,让GPA用上。spring的声明是事物,对吧?那么我们去整合这个entity manu factory,一共是有三种方式,第一种方式用这个叫local entity manu factory bin。这个的缺点是。不能够用spring里边你data source,它也不支持使用spring的声明式事物,所以说。Pass。第二种方式,我们可以使用g Di从招IE服务器里边获取指定的ntt manufacty,那我要是不用javae服务器的话。
01:10
这种方式用不了了是吧。所以说这种方式我们暂时也pass,后边用的时候再说。第三种方式使用local container entity manufactur bin,它适用于所有环境。它可以用spring里边定义的data source,也可以使用spring的生命之事物。那么我们就用它了。OK。我们来写一下代码,新建一个Java工程GPA。Two。Next finish。新建一个lib。首先导入GPA。
02:01
一盘。Java。Open source。去搞harbert。Lib required,全部。然后呢?去搞GPA这个包。我们需要用C3P0。Optional c3P,零。这个eh吧,就是。GPA这个二级缓存这里边我们就不用了,我们在后边讲,嗯,SSP整合的时候,我们再用那个二级缓存。这叫什么东西啊,叫SSSP,三一个P指的是spring spring VC spring data跟GPA,他们整合的时候咱们再考虑。
03:04
使用GPA的二级缓存可以吧?这样这个包完成了一部分,还需要什么呀?还需要买SQL的数据库驱动。张国来。还需要spring的包。Spring4.0,我直接搞这个require全部。这样呢,包就全了。加到A路径下。好了,这个包呢,考的是不少是吧,但是你给它分类的说就可以,我们来总结一下第一个啊,Spring的包。第二个买SQL的驱动。此外的都是Herbert里边的,对吧。
04:02
Hamlet的。搞错了。Harbert。Ha里边的。Record。GPA以及C3P0,就这样子几种。包考完也加完了。下边的话呢,我们来配。Spring的配置文件。Application contact their xm。我们需要用到beans context,还有t finish。首先配置C3P0数据源。那么先导入。资源文件。
05:01
Class下的DB.properties。CTRLC。新建一个file gdb c.u等于root gdb c.password等于ER30GDB c.driver。Class等于com点买点。GDB c.driver gdb c.GDBCLGDBC买。GP好了,其他属性的话呢,我就不写了。然后。配置C3P0数据源,Ban ID data source class com。Propertyor。Value使用EL吧。
06:04
GDBC点优等。Property password value。GDP11.2。Password。Property value。GDBC.driver。Property GB c u value。TDBC.rtdbc段L,这里边我刚才说这个EL是什么呀?是跟EL一样的一个语法吧,但它实际上不是亚巴达式是吧,还可以再配置其他属性。好的,先测试一下。come.at硅谷点儿。
07:04
GPA点润。G unit、单人车之类。GPA。Private application context等于now city等于new plus plus xml application context导入这个配置文件。我们首先来测试。等于Ctx.get b data source.class c data source.get connection这叫什么呀?这叫单元测试,我们做一点的话,我们就测试一下,这样的话呢,不会。
08:07
一留下来很多问题,那个时候有很多问题的话就会很麻烦,对吧,来找一个看看效果。没问题,说明我们这个数据源就配对了下边比较关键的。Page entity manager factory ban。Factory,好了,Class local container。Ity manufact ban都需要什么属性大家说?肯定需要一个data source吧,Reference data source。
09:05
好的,第二个属性叫JPA的adapter jpa提供者的适配器。配置GPA。提供商的适配器好了,一般情况下可以配置一个内部B。可以通过内部。Bin的方式来配置。B class,我叫bert GPA adapt。其他的属性不需要加搞定。再配。Packages to scan就是说。你那个entity配哪了啊,我佩戴了value com点。
10:05
硅谷点,GPA点。Spring entity。搞定。搞这样的一个包。配置实体类所在的包。还有一个配置GPA的G本。属性,例如GPA。实现。产品。的属性,说白了就是那些啊,可以配到这个里面。
11:03
hart.sosql处。Y6值是吧,Y6处。哎哟,不是这么配,你要这么配的话,这是不是个属性了。GPA。这样,然后呢。然后一个一个的prop hart.so处。再来prop.format处。再来prop harbert.hbm two d dl.auto。错保存。
12:01
这个的话呢,需要大致的看一眼,别配错了哈。这个里边配过是吧。打开。看看。Form circle so circle h bm to d auto,这应该配为update。晕了,Update行,这样的话呢,这个nity manufact就配完了。下边配置GPA使用的事务管理器。Bid class GPA transaction manager。CTRLC。大家说它需要什么属性啊,肯定是需要这个manager了,对吧。
13:03
Property entity manager factory reference entity manager。Factory来下一个配置,支持基于注解的数配置,我们使用注解的方式哈,TX drive给一个transaction manager。把这个CTRLV过来,OK,这样这个配置呢就配完了。那么我们在。这个下边来写一个实体类。这个类呢,我们叫person。这个包里边儿啊,我以前的这个里边,这个数据库里边没有person是吧,简单的写几个属性,Last name email int的age。
14:09
Get settle。Control fph。加注解。Entity at table表明GPA。ID generated value使用默认的组件生成方式。At you。Column这里边的话呢,我们可以来配置列的名字,Last name email,使用默认的,使用默认的好了写好了,那么按照我这个配置的话,它会自动来扫描这个包。
15:05
包呢?这是吧,所以说。这个时候我在创建这个application context,它就会创建我的什么呀。N manufactur,那么它就会自动的帮我生成数据表。测试一下,看这个表会生成吗?过了。F5。GPA有吧,没问题。我来写一个DAO。我们使用注解的方式,这里边的话呢,我再配置一个不是这个哈,它配置自动扫描的包。配置自动扫描的包。
16:05
Comp com.aid硅谷。GPA好了,这里边儿呢,我来配一个叫person DA。At reposity对吧?好了,写一个方法save,执行一个保存就可以了。那我这块保存的话,我需要用什么呀?我需要用entity manager吧。问题出来了。我们spring去集成harm的时候呢,我有一个方法叫get communication session,还记得吧,获取跟当前事物绑定的,那么现在这个里边,我要是把nity manu factorcty给搞进来,At auto,它也会有类似的方法吗?
17:02
点。Get current看不到,这样写吧,Entity manager nity manager。等于n manager factory点这个时候的话呢,它会把返回。Nt manager这个方法都放前面吧,两个都是create开头,都是创建新的,所以说这个不靠谱,好了,这里边有一个特别需要注意的地方,诶,如何?获取到和。当前事务关联的nity manager对象呢?Private manager加一个注解叫persistence contact。通过这个注解。
18:01
通过这个注解来标记成员。变量通过这样的方式,于是我来执行一个保存操作。Persist。Person。Control o,这是一个DAO是吧?我当然我还需要一个service。我来写一个。Service来添加注解,这个注解叫service public save person。Transactional有写错了。加上事物是吧,注入person DA at auto,诶,我要保存两个person。
19:12
Person。P p two,就是说我想看这个事物好不好使。LO来person DAo.save。PE,这是一个person。嗯。da.save。P two来暂时间不加任何异常,看一下效果。过来,Public world test person。Service。Taste。
20:02
Service等于now。Service等于CDx.get b person service.class。写完,然后呢,测试一下person。PE等于new。Person p一点set edge11 P一点set email aa163,.com PE一点sna AA是一个。再来一个。Ctrl c ctrl v two。Two。BB。
21:01
诶。大写的小写的,来,我执行一个保存操作,Person service.save PP two。现在效果好不好使哈。走起。这里边我还可以再干一件事,我打一个person.get耶,Person service.get class.get name,如果这块打的是一个代理对象的话,说明这个事故是不是加上了。是吧?走起。首先是得过必有问题,然后两条insert,这是一个代理对象吧。这个时候应该进得来,刷新都进来了,没问题好了,那下边的话呢,我们想在这块人工的给它抛一个异常int I等于十除以零,注意这个时候是不是可以抛一个运行时异常啊,这两个记录一个也进不去。
22:06
再找。跑一场了,一个也进不来,没问题吧,这个事物也确实是加上。好了,以上的话呢,就是spring整合GPA的过程。我们来做一个小结。首先加加包,刚才已经说过了哈,然后呢,配置这个配置文件。配置这个呀,跟整个hamlet几乎是一样的。自动扫描的包数据源正常吧?诶,就是配这个nt factory manager多少有点不一样,但是像配data source是不是很正常啊?对吧,包括配这个JP properties,我们配那个factorcty,不也需要配一个harmon properties吗?那这个需要配一个。
23:03
Gapa提供商的一个适配器,同时的话呢,还需要配一个。嗯,扫描实体类所在的一个包,后边配这个事物管理器啊,配事物啊,跟以前都是一模一样的。好了。然后呢,我们开始写代码,写代码的话我们过来看一看哈。Person,这个不用说,前面已经说的非常多了,是吧?Service,正常DA里边有一个地方不一样,我们如何获取到?跟当前线程关联的entity manager呢?我们通过这样一个注解的方式。All,这就是spring整合GPA的全过程。这里边呢,还是需要来做一个广告,或者还需要跟大家讲一下。
24:00
GPA跟spring data如果要是放一起的话,会产生非常浓重的化学反应。那个时候我们在底层DAO几乎不需要写代码,即使写代码的话,也只声明一个接口,声明一个方法就可以了,不需要提供方法的实现,它俩放一起才可以真正的释放GPA的。巨大魅力,好吧。下一个视频大家敬请期待spring data。
我来说两句