当前位置: 移动技术网 > IT编程>开发语言>Java > JPA的基本注解

JPA的基本注解

2019年12月10日  | 移动技术网IT编程  | 我要评论

创伤不归路,外汇百科,致富网站

场景

jpa入门简介与搭建helloworld(附代码下载):

https://blog.csdn.net/badao_liumang_qizhi/article/details/103473937

在上面搭建jpa的helloworld时在实体类中用到了一些注解

package com.badao.jpa.helloworld;

import javax.persistence.column;
import javax.persistence.entity;
import javax.persistence.generatedvalue;
import javax.persistence.generationtype;
import javax.persistence.id;
import javax.persistence.table;

@entity
@table(name="jpa_customers")
public class customer {
 
 
 private integer id;
 
 private string lastname;

 private string email;
 
 private int age;
 
 @generatedvalue(strategy = generationtype.identity)
    @id
 public integer getid() {
  return id;
 }
 public void setid(integer id) {
  this.id = id;
 }
 
 @column(name="last_name")
 public string getlastname() {
  return lastname;
 }
 public void setlastname(string lastname) {
  this.lastname = lastname;
 }
 public string getemail() {
  return email;
 }
 public void setemail(string email) {
  this.email = email;
 }
 public int getage() {
  return age;
 }
 public void setage(int age) {
  this.age = age;
 }
 

}

 

那么除此之外jpa还有哪些基本注解

注:

博客主页:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

@entity

@entity 标注用于实体类声明语句之前,指出该java 类为实体类,将映射到指定的数据库表。如声明一个实体类 customer,它将映射到数据库中的 customer 表上。

@table

当实体类与其映射的数据库表名不同名时需要使用 @table 标注说明,该标注与 @entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。
@table 标注的常用选项是 name,用于指明数据库的表名
@table标注还有一个两个选项 catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名。uniqueconstraints 选项用于设置约束条件,通常不须设置。

@id

@id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
@id标注也可置于属性的getter方法之前。

@generatedvalue

@generatedvalue  用于标注主键的生成策略,通过 strategy 属性指定。默认情况下,jpa 自动选择一个最适合底层数据库的主键生成策略:sqlserver 对应 identity,mysql 对应 auto increment。


在 javax.persistence.generationtype 中定义了以下几种可供选择的策略:
identity:采用数据库 id自增长的方式来自增主键字段,oracle 不支持这种方式;
auto: jpa自动选择合适的策略,是默认选项;
sequence:通过序列产生主键,通过 @sequencegenerator 注解指定序列名,mysql 不支持这种方式
table:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

@basic

@basic 表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的 getxxxx() 方法,默认即为@basic
fetch: 表示该属性的读取策略,有 eager 和 lazy 两种,分别表示主支抓取和延迟加载,默认为 eager.
optional:表示该属性是否允许为null, 默认为true

@column

当实体的属性与其映射的数据库表的列不同名时需要使用@column 标注说明,该属性通常置于实体的属性声明语句之前,还可与 @id 标注一起使用。
@column 标注的常用属性是 name,用于设置映射数据库表的列名。此外,该标注还包含其它多个属性,如:unique 、nullable、length 等。
@column 标注的 columndefinition 属性: 表示该字段在数据库中的实际类型.通常 orm 框架可以根据属性类型自动判断数据库中字段的类型,但是对于date类型仍无法确定数据库中字段类型究竟是date,time还是timestamp.此外,string的默认映射类型为varchar, 如果要将 string 类型映射到特定数据库的 blob 或text 字段类型.
@column标注也可置于属性的getter方法之前

@transient

表示该属性并非一个到数据库表的字段的映射,orm框架将忽略该属性.
如果一个属性并非数据库表的字段映射,就务必将其标示为@transient,否则,orm框架默认其注解为@basic

@temporal

在核心的 java api 中并没有定义 date 类型的精度(temporal precision).  而在数据库中,表示 date 类型的数据有 date, time, 和 timestamp 三种精度(即单纯的日期,时间,或者两者 兼备). 在进行属性映射时可使用@temporal注解来调整精度.


 


 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网