Beginning Spring学习笔记——第5章(一)ORM和JPA基础

ORM和JPA简介


持久化

即数据在瞬时状态(内存)和持久状态(数据库–磁盘)之间的转化。

ORM框架

ORM即Object Relational Mapping对象关系映射。完成表与类,属性与类,表之间关系外键与对象间关系之间的映射,解决了以下问题:

  • 对象之间管理的方向性与外键的无方向性的矛盾
  • 对象的尽可能细粒度与关联数据往往整合在同一个表的矛盾
  • 继承和多态的层次性和外键的无层次性的矛盾
  • 数据获取方式彼此不适用

为解决问题,ORM框架应当具备如下功能:

  • 对象模型和关系模型之间的元数据映射
  • 用来在对象上执行相关操作的CRUD API
  • 一种对象查询语言
  • 不同数据获取策略和对象网络遍历功能,以便提高内存使用率以及数据获取时间性能
JPA

即Java Persistence API,在Java中处理持久化操作,对JavaEE中的ORM特性和功能执行标准化

将对象模型映射到关系模型


定义实体

实体类——和数据表相对应的类(通常一对一,也可一对多)。采用@Entity注解标识,并用@Table注解表明与其对应的表名。其中的主键用@Id注解标明,如果使用了@GeneratedId标注,说明该值是由ID生成策略生成的。

将属性映射到列

默认情况下实体类中所有属性都会被持久化,除非用@Transient标注。默认列名与属性名相同,如果不同可以用@Column注解进行更改。

在对象之间创建关联
  • 一对一关联:@OneToOne注解标注,@JoinColumn指定了外键关系
  • 多对一关联:@ManyToOne标注
  • 一对多关联:@OneToMany标注,标注的属性为Set、List一类
  • 多对多关联:@ManyToMany标注,用@JoinTable指定两个表之间的关联表的各列
单向关联

在关联注解中使用mappedBy属性指定另一方为只读(镜子)属性,镜子属性值的设置对创建和删除关联没有影响。

配置JPA和Hibernate


这一章所需要的所有依赖如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lonelyquantum.springbeginning.wileybookch4</groupId>
  <artifactId>JDBCTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>JDBCTest</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.3.10.RELEASE</spring.version>
    <junit.version>4.12</junit.version>
    <h2.version>1.4.196</h2.version>
    <hibernate.version>5.2.10.Final</hibernate.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值