简单映射
近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场 热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 Toplink。Sun 公司在充分吸收现有的优秀 ORM 尤其是 Hibernate 框架设计思想的基础上,制定了新的 JPA(Java Persistence API)规范,对现在乱象丛生的持久 化市场带来一个标准,大有统一持久化市场的气势。JPA 是通过 JDK5.0 注解或 XML 描述对象 - 关系表的映射关系,并将 运行期实体对象持久化到数据库中去。JPA 规范小组的领导人就是 Hibernate 的发明者 Gavin King,JPA 规范的制定过程 中大量参考了 Hibernate 的内容,所以如果一个对 Hibernate 很熟悉的人,使用起来 JPA 会是轻车熟路,驾轻就熟的, 并且会感觉到更简单一些,这主要得益于 JDK5 中引入的注解(annotation)。
下面就使用注解介绍一下 JPA 的使 用。
首先用个小例子介绍一下如何将一个单个 Java 类映射到数据库中。
清单 1. Employee 实体
@Entity public class Employee implements Serializable { private static final long serialVersionUID = 1L; @Id private Long id; private String name; private int age; private String addree; // Getters and Setters }
如果没有 @javax.persistence.Entity 和 @javax.persistence.Id 这两个注解的话,它完全就是一个典型的 POJO 的 Java 类,现在加上这两个注解之后,就可以作为一个实体类与数据库中的表相对应。他在数据库中的对应的表为 :
图 1. Employee 表对应的 ER 图
映射规则:
1. 实体类必须用 @javax.persistence.Entity 进行注解;
2. 必须使用 @javax.persistence.Id 来注解一个主键;
3. 实体 类必须拥有一个 public 或者 protected 的无参构造函数,之外实体类还可以拥有其他的构造函数;
4. 实体类必 须是一个顶级类(top-level class)。一个枚举(enum)或者一个接口(interface)不能被注解为一个实体;
5. 实体类不能是 final 类型的,也不能有 final 类型的方法;
6. 如果实体类的一个实例需要用传值的方式调用(例 如,远程调用),则这个实体类必须实现(implements)java.io.Serializable 接口。
将一个 POJO 的 Java 类映 射成数据库中的表如此简单,这主要得益于 Java EE 5种引入的 Configuration by Exception 的理念,这个理念的核 心就是容器或者供应商提供一个缺省的规则,在这个规则下程序是可以正确运行的,如果开发人员有特殊的需求,需要改变 这个默认的规则,那么就是对默认规则来说就是一个异常(Exception)。
如上例所示:默认的映射规则就是数据库 表的名字和对应的 Java 类的名字相同,表中列的名字和 Java 类中相对应的字段的名字相同。
现在我们可以改变 这种默认的规则:
清单 2. 使用 @Table 和 @Column 注解修改映射规则
@Entity @Table(name="Workers") public class Employee implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private Long id; @Column(name="emp_name", length=30) private String name; @Column(name="emp_age", nullable=false) private int age; @Column(name="emp_address", nullable=false ,unique=true) private String addree; // Getters and Setters }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, private
, serialversionuid
, 注解
, java实体类
, 注解实体类
, 实体映射报错
, hibernate 一对一注解
, 规则
, 注解hibernate基类jpa字段
, 一个
, 实体
, mybatis映射实体类
实体类对象
hibernate 对象映射、jpa hibernate、jpa和hibernate的区别、hibernate jpa 配置、spring jpa hibernate,以便于您获取更多的相关知识。