JPA详细学习指南

 

1 jpa 是一种技术规范,相当于一个接口,不是一种框架,它需要配合持久框架(hibernatetoplinkjdo)来使用。例如hibernate实现了jpa ……

       jpa的缺点:它没有建数据库的索引,它也没有缓存。

2、使用jpa的俩种方式:

        1)先建表,后根据表来编写配置文件和bean,使用这种方案的开发人员受到了传统数据库建模的影响。

        2)先编写配置文件和实体bean,然后再生成表。使用这种方案的开发人员采用是领域建模的思想,这种思想更加OOP

3jpa有一个固定名称的配置文件persistence.xml,放在META-INF目录下。

4jpa的配置文件中有以下属性 hibernate.dialect”:方言,hibernate.hbm2ddl.auto:自动建表value="update",应用启动的时候建表,当这个表存在表结构没有变化的时候,不创建,如果有变化,不存在的时候,创建。

5、事务类型:本地事务、全局事务。Transaction-type="RESOURCE-LOCAL",一般情况下用本地事务。

                             本地事务应用场合:同一个数据的转账。

                            全局事务应用场合:转账,俩个数据库(JTA.getUserTranction().begin();    JTA.getUserTranction().commit();  俩次提交协议,俩个true之后才能提交                                                

6、使用注解,提高开发效率。?注解的缺点:让代码太乱,让人不知道它的作用。

7javax开头的包,一般是sun公司制定的技术规范。

8、主键生成的注解  @GeneratedValue(strategy=GenerationType.AUTO)AUTO是默认的类型。

       根据方言(不同数据库)来决定主键生成策略。

                                         其他strategy 有:IDENTITY (自增)   SEQUENCE(序列)  TABLE(表)  CLASS

9、用以下单元测试的代码测试实体映射到表是否成功(是否有生成表)



在创建sessionFactory的时候生成了表。EntityManagerFactory 相当于hibernateSeesionFactory

10 、常用的映射关键字:


大数据字段映射和字段延迟加载:

LONGBLOB


懒加载,当不访问这个字段的时候,不会让它载入内存中;到访问它的时候,才加载这个字段


10jpa的方法

  find(object obj,object args);        相当于hibernateget();

   getReference(object obj,object args);相当于hibernateload()--延迟加载; 如果没有具体访问到字段,字段并没有加载(没有真正查询)。



11jpa中对象的四张状态:

    new(新建状态):产生实例的时候

    managed(托管)

    游离状态:

    删除状态:


如上图,可在person.setName("老黎");后面加上em.merge(person),此方法能让游离的对象同步到数据中,让数据库修改成功。


12jpa与持久化框架实现产品对接的源码

13、面向对象的查询语句

        **在查询语句中添加参数的时候不要直接把值赋给字段,容易引起安全问题(sql注入);



14jpa双向的一对多,多对一,多对多的关联和级联操作

一对多 订单对订单项  多的一方为关系维护端,关系维护端负责外键记录的更新,关系被维护方是没有权利更新外键字段的。



注意:这四种级联操作并不是对所有的操作的适用,应用场合:只有调用persistent(),增加级联才管用,merge()---更新级联,remove()--删除级联。

psem.refresh(person)获取最新数据(直接从数据库取,而不是从缓存取)。

15、一对多的延迟加载与关系维护


上图的默认是立即加载,注意:如果是ONETOMANY的时候,一定要设延迟加载,否则对性能影响很大。


optional属性 (选项)值有:truefalse  如果为true意为可选,可为空。如果为false,必须有值。

外键设置:@joinColumn(name="")

16、双向一对一的关系映射

        现实生活中的一对一,如人和身份证,夫妻。

17、双向多对多的关系映射

        现实生活中的老师和学生。多对多的关系通过中间表来体现它们的关系。

       关系维护端,自动生成中间表来体现:


如果要删除被维护端的数据,需要先解除和维护端的关系,才可删除被维护段;

如果要删除维护段的数据,直接删除,无需解除关系。

18jpa中的联合主键

         开发中经常使用俩个或多个字段联合在一起作为主键,这种组合就叫做联合主键。



19annotation(注解)语法及应用






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值