2、JPA-Annotation
注解放在类属性上不生效时可放在get方法上试试,原因未知
@Entity
/**
* @Entity 该Java类为实体类,将映射到数据库表。如声明一个实体类 Customer,它将映射到数据库中的 customer 表上。
*/
@Entity
public class Customer {
@Table
@Table(name = "JPA_CUTOMERS")
/**
* @Table 当实体类与其映射的数据库表名不同名时使用
* name,用于指明数据库的表名
* catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名
* uniqueConstraints 选项用于设置约束条件,通常不须设置
*/
@Entity
public class Customer { private Integer id;
@Id
/**
* @Id 声明一个实体类的属性映射为数据库的主键列。标注可写在属性的getter方法上。
*/
@Id
public Integer getId() {
return id;
}
@GeneratedValue
/**
* @GeneratedValue 用于标注主键的生成策略,通过 strategy 属性指定
* 默认 JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment
* 在 javax.persistence.GenerationType 中定义了以下几种可供选择的策略:
* IDENTITY:采用数据库 ID自增长的方式来自增主键字段,Oracle 不支持这种方式
* AUTO: JPA自动选择合适的策略,默认选项
* SEQUENCE:通过序列产生主键,通过 @SequenceGenerator 注解指定序列名,MySql 不支持这种方式
* TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植
*/
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
public Integer getId() {
return id;
}
@Basic
/**
* @Basic 表示属性到数据库表字段的映射, 对于没有任何注解的 getXxxx() 方法,默认为写了 @Basic
* fetch: 表示该属性的读取策略,有 EAGER 和 LAZY 两种,分别表示主支抓取和延迟加载,默认为 EAGER.
* optional:表示该属性是否允许为null, 默认为true
*/
@Basic(optional = false)
public String getEmail() {
return email;
}
@Column
/**
* @Column 当实体类属性与其映射的数据库表的列不同名时使用
* name,用于设置映射数据库表的列名。此外,该标注还包含其它多个属性,如:unique 、nullable、length 等
* columnDefinition 属性: 表示该字段在数据库中的实际类型
* 通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是 DATE,TIME 还是 TIMESTAMP
* 此外 String 的默认映射类型为 VARCHAR, 如果要将 String 类型映射到特定数据库的 BLOB 或 TEXT 字段类型
*/
@Column(name = "LAST_NAME", length = 50, nullable = false)
public String getLastName() {
return lastName;
}
@Transient
/**
* @Transient 表示该属性不需要映射到数据库表字段,ORM 框架忽略该属性
* 如果一个属性并非数据库表字段映射,需写上 @Transient,否则 ORM 框架默认其注解为 @Basic
*/
@Transient
public String getInof() {
return "Customer{" +
"id=" + id +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
@Temporal
/**
* @Temporal 在进行时间类属性映射时调整精度
* 在核心的 Java API 中没有定义 Date 类型的精度(temporal precision)
* 在数据库中,表示 Date 类型的数据有 DATE,TIME 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者两者兼备)
*/
@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedTime() {
return createdTime;
} @Temporal(TemporalType.DATE)
public Date getBirth() {
return birth;
}

@TableGenerator
/**
* @TableGenerator 将当前主键的值保存到一个数据库表中,主键的值每次都从指定的表中查询获得
* 这种主键策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题
* name 该主键生成策略的名称,它与 @GeneratedValue 中设置的 generator 值对应
* table 表生成策略所持久化的表名
* pkColumnName 在持久化表中,该主键生成策略所对应键值的名称
* valueColumnName 在持久化表中,该主键当前所生成的值,它的值将会随着每次创建累加
* pkColumnValue 在持久化表中,该生成策略所对应的主键
* allocationSize 每次主键值增加的大小, 默认值为 50
*/
@TableGenerator(name = "xxx",
table = "jpa_id",
pkColumnName = "pk_name",
pkColumnValue = "CUTOMERS_ID",
valueColumnName = "pk_value",
allocationSize = 2
)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "xxx")
@Id
public Integer getId() {
return id;
}
插入数据表

ID持久化表

2、JPA-Annotation的更多相关文章
- Hibernate or JPA Annotation中BLOB、CLOB注解写法
BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的,而CLOB是可以直接存储字符串的. 在hibernate or JPA Annotation中,实体BLOB.CLOB类型的注解与普 ...
- 4、JPA table主键生成策略(在JPA中table策略是首推!!!)
用 table 来生成主键详解 它是在不影响性能情况下,通用性最强的 JPA 主键生成器.这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题. initialValue不起 ...
- 3、JPA一些常用的注解
常用注解有下面这些: ①:@Entity.@Table.@Id.@GeneratedValue.@Column.@Basic ②:@Transient 用于忽略某个属性,而不对该属性进行持久化操作 ③ ...
- 转:spring data jpa、 hibernate、 jpa 三者之间的关系
原文链接:spring data jpa. hibernate. jpa 三者之间的关系 spring data jpa hibernate jpa 三者之间的关系 JPA规范与ORM框架之间的关系是 ...
- JPA Annotation注解
JPA & Hibernate 注解 先说说JPA和Hibernate的关系 JPA(Java Persistence API),是Java EE 5的标准ORM接口,也是ejb3规范的一部分 ...
- spring data jpa、 hibernate、 jpa 三者之间的关系
http://www.cnblogs.com/xiaoheike/p/5150553.html JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架-- ...
- Spring Boot多数据源配置(一)durid、mysql、jpa整合
目前在做一个统计项目.需要多数据源整合,其中包括mysql和mongo.本节先讲mysql.durid.jpa与spring-boot的整合. 引入Durid包 <dependency> ...
- spring data jpa 、hibernate、jpa之间的关系
引用:http://blog.csdn.net/u014421556/article/details/52635000 hibernate作为JPA的实现. JPA规范与ORM框架之间的关系 ...
- SpringData Jpa、Hibernate、Jpa 三者之间的关系
JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架--因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服 ...
- 【Spring Data 系列学习】了解 Spring Data JPA 、 Jpa 和 Hibernate
在开始学习 Spring Data JPA 之前,首先讨论下 Spring Data Jpa.JPA 和 Hibernate 之前的关系. JPA JPA 是 Java Persistence API ...
随机推荐
- Web.xml中Filter过滤器标签几个说明
在研究liferay框架中看到Web.xml中加入了过滤器的标签,可以根据页面提交的URL地址进行过滤,发现有几个新标签没用过,下面就介绍以下几个过滤器的标签用法: <!-- 定义Filter ...
- Edge Deletion CodeForces - 1076D(水最短路)
题意: 设从1到每个点的最短距离为d,求删除几条边后仍然使1到每个点的距离为d,使得剩下的边最多为k 解析: 先求来一遍spfa,然后bfs遍历每条路,如果d[v] == d[u] + Node[i] ...
- 【BZOJ1004】【HNOI2008】Cards 群论 置换 burnside引理 背包DP
题目描述 有\(n\)张卡牌,要求你给这些卡牌染上RGB三种颜色,\(r\)张红色,\(g\)张绿色,\(b\)张蓝色. 还有\(m\)种洗牌方法,每种洗牌方法是一种置换.保证任意多次洗牌都可用这\( ...
- MT【296】必要性探路
已知$a,b\in R.f(x)=e^x-ax+b$,若$f(x)\ge1$恒成立,则$\dfrac{b-a}{a}$的取值范围_____ 提示:答案:$[-1,\infty)$取$x=0,b\ge0 ...
- 安卓Q | 诸多本地文件找不到?应用文件存储空间沙箱化适配指导
上期我们针对Android Q 版本中对设备存储空间进行的限制.新特性变更引发的兼容性问题及原因分析推出了<安卓 Q | 8大场景全面解析应用存储沙箱化>文章,本期文章我们将手把手指导各位 ...
- 【linux】linux查找功能
linux系统中我们经常会需要查找某些文件,当有时候我们不确定一个文件的位置,比如某服务配置文件具体路径,自己没有头绪去寻找的话会很难找,也会耽误时间.linux就提供了很多命令,find,locat ...
- codevs 2606 约数和(分块优化数学公式 )
题目背景 Smart最近沉迷于对约数的研究中. 题目描述 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f(X).现在的问题是 ...
- mui侧滑菜单"点击含有mui-action-menu类的控件"无法实现侧滑
.mui-action-menu 标题栏 菜单按钮 指定href="#id"显示与隐藏侧滑菜单 html: <div class="mui-off-canvas-w ...
- BZOJ3512 DZY Loves Math IV
解:这又是什么神仙毒瘤题...... 我直接把后面那个phi用phi * I = id反演一波,得到个式子,然后推不动了...... 实际上第一步我就大错特错了.考虑到n很小,我们有 然后计算S,我们 ...
- 快速傅里叶变换(FFT)
扯 去北京学习的时候才系统的学习了一下卷积,当时整理了这个笔记的大部分.后来就一直放着忘了写完.直到今天都腊月二十八了,才想起来还有个FFT的笔记没整完呢.整理完这个我就假装今年的任务全都over了吧 ...