JPA 学习笔记

eclipse 新建jpa项目 :

修改 persistence.xml 文件

创建 Customer 类:

      column 名称和数据库名称对应则不用写

类写好后在 persistence.xml 添加持久化类:

编写main方法:

  右键运行 数据库自动创建:数据插入数据库

JPA基本注解:

  一般讲注解加到 get方法上面:

  如果entity 中有列名没有加注解 就相当于自动加上了 @Basic 注解

  entity中不需要映射到数据库表的一列 可以加 @Transient

 创建默认 birth,createdTime 数据库生成样式:

  birth createdTime 类型是 datatime 类型:

重新设置后:createdTime 精确到时分秒 birth 精确到 日期

 

业务场景不是很多:

    pkColumnName -》 PK_NAME 确定列

    pkColumnValue -CUSTOMER_ID 确定第几行

    valueColumnName -》确定初始化值 

    allocationSize-》每次增长多少

   Find方法 调用方法直接发sql语句 :

  getReference 方法调用不发sql, 用到 查询出结果时候才发出sql 懒加载:

  persistence 方法类似save方法 有些许不同:

  hibernate delete方法:new customer 不能进行移除 只有查询出来的可以移除

  hibernate saveOrUpdate 方法:

 

 

    如果是hibernate session关联2个数据不能进行saveOrUpdate方法 已经有ID=4的数据 并且数据库有数据 entityManager 关联 customer 1,2 JPA可以进行merge:

    类似  

 ----------------------------------------------------------------------------------------------------------------------------------------------------

 

  和hibernate session  中 flush 方法相同。

 

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------

                关联关系:

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------

  单向多对一:

多个order 对应一个 Customer

   保存:

  懒加载ManyToOne:fetch lazy

 

  删除:

  修改:

  单向一对多:

 

  保存:

   查询:加载方式也可以修改 Customer 类中 getOrder 方法 @OneToMany fetch 属性修改加载策略

 

  修改:可以级联删除 级联制空

 

  修改:set直接就update了??????????

 

   双向多对一:

   上面两种情况同时打开就是双向多对一 也就是双向一对多:

    customer 

    order 

  保存:

 

      放弃维护关系:Customer类中 设置 mappedBy="customer"

 

  双向一对一:

  经理和部门关系:

  department:

 

 

  manager:

 

 

  保存:

 

   查询:

 

 

原文地址:https://www.cnblogs.com/lixuchun/p/9176275.html