博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA的实体
阅读量:6905 次
发布时间:2019-06-27

本文共 2704 字,大约阅读时间需要 9 分钟。

hot3.png

一个实体,就是一个持久化的领域对象。通常情况下,一个实体代表在关系数据库中的一张表,实体的一个实例对应于表中的一行。

  JPA规范对实体的要求:

  1、实体类必须使用javax.persistence.Entity进行注解(@Entity)。

  2、实体类必须要有一个公共的或者受保护的空参构造方法。

  3、实体类不能声明为final,方法和需要持久化的属性也不能声明为final。

  4、如果游离态的实体对象需要以值的方式进行传递,则必须实现Serializable接口。

  5、实体类可以继承实体类和非实体类,非实体类也可以继承实体类。

  6、持久化实例变量必须被声明为私有的、受保护的或者私有包,只能直接访问实体类的方法。

  JAP实体类常用的注解:

  1、@Entity 将领域对象标注为一个实体,表示需要保存到数据库中。

  2、@Table @Table(name="table_name")用name属性指定对应的表。

  3、@Id 表示对应的字段是表的主键。

  4、@GeneratedValue 主键的产生策略。

  5、@Column @Column(name="col_name",nullable=true,length=32)用name属性指定对应表中的列名,nullable指定是否可以为空,length指定列的长度。

  6、@Temporal  @Temporal(TemporalType.Date)指定时间类型,数据库对时间的类型有严格的划分。

  7、@Version “提交版本必须大于记录当前版本才能执行更新”的乐观锁策略。

  8、@Transient 让变量不要持久化到数据库中

 

  一个实体例子: 

1 package com.cndatacom.jpa.entity; 2  3 import java.io.Serializable; 4 import java.sql.Timestamp; 5 import java.util.Date; 6  7 import javax.persistence.Column; 8 import javax.persistence.Entity; 9 import javax.persistence.GeneratedValue;10 import javax.persistence.Id;11 import javax.persistence.Table;12 import javax.persistence.Temporal;13 import javax.persistence.TemporalType;14 import javax.persistence.Transient;15 import javax.persistence.Version;16 17 /** 18  *   Luxh19  */ 20 21 @Entity//标识为持久化实体对象 22 @Table(name="t_employee")//指定表名 23 public class Employee implements Serializable {
24 25 private static final long serialVersionUID = -6143714081018642099L;26 27 @Id//标识为主键 28 @GeneratedValue//主键产生策略 29 private Long id;30 31 @Column(name="name",length=100)//指定列名、列的长度 32 private String name;33 34 @Temporal(TemporalType.DATE)//指定时间格式类型 35 private Date createTime;36 37 @Version//乐观锁 38 @Column(name="optlock")39 private Timestamp version;40 41 @Transient//让变量不要持久化到数据库中 42 private String temp;43 44 public Long getId() {
45 return id;46 }47 48 public void setId(Long id) {
49 this.id = id;50 }51 52 public String getName() {
53 return name;54 }55 56 public void setName(String name) {
57 this.name = name;58 }59 60 public Date getCreateTime() {
61 return createTime;62 }63 64 public void setCreateTime(Date createTime) {
65 this.createTime = createTime;66 }67 68 public Timestamp getVersion() {
69 return version;70 }71 72 public void setVersion(Timestamp version) {
73 this.version = version;74 }75 76 public String getTemp() {
77 return temp;78 }79 80 public void setTemp(String temp) {
81 this.temp = temp;82 }83 84 }

转载于:https://my.oschina.net/xiahuawuyu/blog/59595

你可能感兴趣的文章
史上比较用心的纯代码实现AutoLayout
查看>>
为什么Linux安全 基于它的安卓不安全呢?
查看>>
美国高通公司携手贵州 研发数据中心服务器芯片
查看>>
步步学LINQ to SQL:为实体类添加关系
查看>>
差异化方案和定制化产品 化解智慧城市难题
查看>>
软件测试工具MonkeyTalk使用方法
查看>>
使用python进行文件备份
查看>>
《数据结构与抽象:Java语言描述(原书第4版)》一JI2.2.1 延缓处理:throws子句...
查看>>
看,那人好像一个产品狗,对,这就是产品狗
查看>>
《 Java并发编程从入门到精通》 Java线程池的监控
查看>>
《Ansible权威指南》一1.8 Python多环境扩展管理
查看>>
《全栈性能测试修炼宝典 JMeter实战》—第1章 1.5节从招聘要求看岗位价值
查看>>
Gartner2017年十大技术趋势
查看>>
sum() 函数性能堪忧,列表降维有何良方?
查看>>
fastreport 导出图片并打印
查看>>
学习html我们从百度百科开始
查看>>
如何Spring Cloud Zuul作为网关的分布式系统中整合Swagger文档在同一个页面上
查看>>
实现一个炫酷的随机标签排列效果(颜色随机,大小随机,成菱形排列的列表)...
查看>>
flex 布局
查看>>
数字资产交易所开发:平台币快速吸金的背后
查看>>