00:00
下边呢,我们来看一下nity manager的这四个方法,分别是find get reference persistence跟。为了更好的进行测试,我把这个持久化类的主线生成方式改一下,改成auto的方式,Auto是什么意思啊?使用数据库自增的方式at generated value。String等于auto。不写是不是也可以呀,因为它是默认的对吧。然后呢,我再来新建一个。GPA的test。Taste。我们来新建一个gene单人车类。GPA test。
01:01
我在每一个方法里边都需要用到ntt manager,实际上的话呢,还有那个事物我需要测试嘛,所以说这块我先需要新建一个nt manager,还需要新建一个n transaction。在最后呢,我需要关闭nt manager factory是吧,就是这块我需要重新建一个nt manager factory好了,然后分别写in跟determine方法。NBA manufacty等于peristence.create。Manufact这个呢?实际实际上叫。GPA1是吧。就是这个名吗?
02:05
然后来创建nity nity manager factory.create然后开启事务transaction等于nity manager点。Get transaction开启事务transaction.begin。这个加一个注解应该叫什么呀?在每个方法开始之前调用叫before。再来一个public VO。Destroy at after。这里呢,我们需要提交事务。还要关闭nt manager,还需要关闭n manager factor行了,这样的话呢,这个开始跟结束就写完了。
03:06
现在我们先来测试。这个叫。F。Find的方法,好了,这个fan的方法呢,类似于。On中session get方法好,测试一下。我首先把这个数据包给它删了,我们不用这个主主机生成方式了啊。重新的给它生成一下,那把这个跑一下就会进行生成。走。然后。F5对个右键open。刷新12。
04:01
我加一条记录进来哈。Email aa163.com。值AA。报春。刷新好了,我们来看一下这个fan的方法,我首先我要获取的是一个customer。等于nity manager点看到了吧,customer.class。主键值是一。这个不需要进行强转,然后呢,我先打一个什么呀。打一条横线,然后我们再来打印customer。重写catd to论方法。
05:00
好的,看效果。看到一个什么呀,前面呢有一个select语句,中间打的横线,后边呢,我打印了这个卡详细信息是吧,同学说老师你加这个横线有什么用啊,加这个横线的作用就是我们看到了,我是的确在调饭的方法的同时,它就已经发了select吧,而并不是。当我需要这个属性的时候才发的这个主要就是跟我们下一个方法进行对比,所以说这个方法呢,没有什么特别需要说的,再看一个。Get reference这个方法呢,相当于。Harmlet中session什么方法的方法?就是说我同样把这个复制过来,CTRLCCTRLV,把这个改成get reference,大家会看到一样的结果,但不一样的过程。
06:16
找一个。怎么不一样了,你看是不是先打的横线啊,后打的什么呀,后打的色口,然后这个结果吧,这就说明。这就说明在我40行的时候,实际上是返回了卡通对象的一个代理,直到你真正需要使用对象,使用这个对象属性的话,它才。向数据库里边发SQL。初始化这个对象,所以说相当于harmlet里边session的load方法,这块的话呢,再做一个打印customer,点点get class.get name,再看效果。
07:07
看到了吧,这是一个代理对象,那既然是代理对象的话,它就有可能会出现。懒加载异常的问题还记得吗?就是说在你真正使用这个对象属性之前,我把ntt manager给关了,就有这个问题吧。它跟harm是。一致的,我们简单的测试一下,我把这两行代码给它复制过来。复制到这个地方,同时呢,把这个给它。注视点看效果。是不是懒加载异常没有session啊,它底层怎么了,它底层用的是halet,所以说打的这个错误消息呢,跟当时我们撤那个错误消息一模一样。
08:00
好的,把这个给它恢复回来,把这个也给它注掉,嗯,如果你会harm那个section漏的方法的话,这个就非常容易掌握,实际上就是换了个马甲对吧。下一个方法。我们来说一下persistence,诶这个persistence呢,类似于harmonlet的方法,但是会多少的有些许不同,我们首先创建一个卡。我设置customer的edge正台设置customer的。设置create time。
09:06
Email。我来执行一下这个persistence。Nity manager.persistence。叫KA。我们看到的是它能发送。Insert。然后呢,让这个对象由。临时状态变为持久化状态,G,我发完这个之后啊,我们会看到什么方法,我们会看到它是有ID的。好,走一个。那这个过了过来看见你算数了吧,好了,而且呢,我们看到了这个ID可以被打印是什么呀,是。
10:11
对象由。临时状态变为持久化状态是吧,这个就是方法。但是它跟save方法会有些许的不同,和har的save方法的不同之处在哪呢?落对象有ID,则。不能执行。Insert操作而会抛出异常,就是说如果这块你要设一个ID的话,比方说里边速度值哈,设一个100你这种。
11:07
你会发现它会抛出异常,而harnet那个不会,我们找到har前面那个代码,我们找到test,我们往下翻,我们看前边讲的这个save方法在这呢,哎,这个我也设了一个100。找一下。走。你看见他怎么样,可以正常过吧?这就是它们之间的一个区别。再看一个方法,Public world test笔幕。这个方法呢,类似于harmt的比例的方法。把。对象。
12:02
对应的记录从从数据库中移除。但注意。该方法。只能移除。持久化对象。而harmon。当delete的方法,实际上还可以移除有理对象。这怎么样?这个是有区别的,At test,我们先看效果customer customer等于new。写好写好之后的话呢,我来设一个IDD2。
13:01
数据表里边的确是有这个二吧是吧,我要给它进行remove manager.remove。找一个看看效果。你发现这个时候什么了,它移除不了是吧,我不能够移除一个什么呀。出一个有理对象。那怎么办呢?我得这样做。等于。Ntt manager点。Find卡点CLASS2,这个时候就可以移除。这看。这个时候这个怎么样,已经删除了吧,这个是OK的,Harmlet里边不是这样。我们再过来看ha的。方法。哎,这个是我们找到harmme对应这张数据表。
14:05
F。Person目前只有一个。person是三。我们。设置一个三,注意看,这要看的话,这应该是一个有理对象吧,数据库里边有对应的记录,但是此时这个person跟session不关联,看效果啊。过了,然后看这儿。他真的被移除了。那么当然。我们这个迪例子方法也可以删除持久化对象,那个是毋庸置疑的是吧?诶这里面我们还看到了一些区别,这就是我们讲到的这四个方法,分别是find类似于harmlet里边的get方法,Get persistence类似harmonle里的load方法。所以说。在session已啊在session在nt manager已经关闭的情况下,它可能会出现懒加载异常的问题,然后呢,我们测试了。
15:09
Persistence,它类似于har里边的save方法。但是。如果。这个对象有ID的话,它不能够进行insert操作,而会抛出一个异常跟save的区别,对吧?再来我们还说了一个remove方法,这个类似于harmle里边那个delete里边session delete是吧?哎。特点是只能够删除持久化对象,而不能够删除。有利对象,而Hart那个delete的方法是可以的。再看一下PPT。
16:00
从GPA的角度,对象也可以分为这四种状态,分别是新建、持久化、游离、删除,这个我们在讲harm的时候详细说过。大家如果要是想复习的话,去参看前面Le那个视频,好吧,这里边的话呢,我就不详细说了,然后我们讲了find get reference。Persist以及铝木。
我来说两句