JPA学习(二、JPA_基本注解)

摘要:
框架学习的JPA(二)JPA是Java持久化API的缩写,中文称为Java持久化层API。它是JDK5.0注释或XML描述对象与关系表之间的映射关系,运行时的实体对象被持久化到数据库中。Sun引入新的JPAORM规范有两个原因:第一,简化现有的JavaEE和JavaSE应用程序开发;第二,Sun希望整合ORM技术,实现世界的统一。在数据库中,表示Date类型的数据具有三种精度:Date、TIME和TIMESTAMP。
框架学习之JPA(二)

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。

学习视频:尚硅谷框架jpa学习(有兴趣的同学留言邮箱)

使用软件:eclipse

Java版本:jdk8

本节目录

二、JPA_基本注解

1.基本的六个注解

        @Entity

        @Table

        @Id

        @GeneratedValue

        @Column

        @Basic

2.@Transient

3.@Temporal

4.Table生成主键

二、JPA_基本注解

如果@Id注解放在get方法上面,默认找到其set方法然后才映射到数据库中,所有的get方法都会按照这个规则进行

如果@Id注解放在属性名上面,则默认会映射属性,无论会不会有getset方法,所有的属性都会按照这个规则进行

注:我自己总结的规则,可能是错误的

1.基本的六个注解

@Entity

@Table

@Id

@GeneratedValue

@Column

@Basic

1)@Entity

  • @Entity标注用于实体类声明语句之前,指出该java类为实体类,将映射到指定的数据库表。

2)@Table

  • 当实体类与其映射的数据库表名不同名时需要使用@Table标注说明,该标注与@Entity并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。如果不加@Table,默认表名为类名。
  • @Table标注的常用选项name,用于致命数据表的表名
  • @Table还有两个选项catalogschema用于设置表所属的数据库目录或模式,通常为数据库名。uniqueConstraints选项用于设置约束条件,通常不设置。

3)@Id

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

4)@GeneratedValue

  • @GeneratedValue 用于标注主键生成策略,通过strategy属性指定。默认情况下,JPA自动选择一个最适合底层数据库的主键生成策略:SqlServer对应identityMySQL对应auto或者increment
  • javax.persistence.GenerationType定义了一下几种可供选择的策略:
    • IDENTITY:采用数据库ID自增长的方式来自增主键字段,Oracle不支持这种方式
    • AUTOJPA自动选择合适的策略,是默认选项
    • SEQUENCE:通过序列生成主键,通过@SequenceGenerator注解指定序列名,Mysql不支持这种方式
    • TABLE:通过表产生主键,框架借由表模拟序列产生主键使用该策略可以使应用更易于数据库移植

5)@Basic

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

6)@Column

  • 当实体的属性与其映射的数据表的列名不同时需要使用,@Column注解说明,该属性通常置于实体的属性声明语句之前,还可以与@Id一起使用。
  • @Column标注的column常用属性是name,用于设置映射数据库表的列名,此外,该注解还包含其他多个属性,如:uniquenullablelength等。
  • @Column标注的columnDefinition属性:表示该字段在数据库中的实际类型,通常ORM框架可以根据属性类型自动判断数据库中的字段类型,但是对于Date类型仍无法确定数据库中字段类型究竟是DateTime还是TimeStamp。此外,String的默认映射类型为VARCHAR,如果要将String类型映射到特定数据库的BLOB或者TEXT字段类型
  • @Column标注也可以置于属性的getter方法之前

2.@Transient

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

3.@Temporal

  • 在核心的Java API中没有定义Date类型的精度(temporal precision)。而在数据库中,表示Date类型的数据有DATETIMETIMESTAMP三种精度(即单纯的日期,时间,或者两者兼备)。在进行属性映射时可以使用@Temporal注解来调整精度

 

4.Table生成主键

通过其他的表的内容来生成主键ID,使用于所有的数据库,但是这个使用的几率很小

1)创建一个jpa_id_generators

 JPA学习(二、JPA_基本注解)第1张

2)设置主键的标签(主键部分的java代码)

@Id

@GeneratedValue(strategy=GenerationType.TABLE,generator="ID_GENERATOR")

@TableGenerator(name="ID_GENERATOR",

table="jpa_id_generators",

pkColumnName="PK_NAME",

pkColumnValue="CUSTOMER_ID",

valueColumnName="PK_VALUE",

allocationSize=100)

private Integer id;


 3)生成效果

两张表的数据都会进行修改

JPA学习(二、JPA_基本注解)第2张

免责声明:文章转载自《JPA学习(二、JPA_基本注解)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VSTO:使用工作簿Windows内存性能分析(二)性能瓶颈下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DB2_SQL_常用知识点&实践

一、删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用; TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少; DELETE...

UML类图一

转自:http://blog.csdn.net/lovelion/article/details/7838679 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。 1.类 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系...

ref:详解MYSQL数据库密码的加密方式及破解方法

ref:https://blog.csdn.net/paul123456789io/article/details/53081921 MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中读取,例如asp代码中的conn.asp数据库连接文件,在该文件中一般都包含有数据库类型,物理...

JAVA入门到精通-第64讲-sql server备份恢复

  邮件服务器备份:   c 创建  查询  更新  删除  /  增删改查;   分离:把数据库aaa暂时离开数据库,可以分离,附加到另外地方去; .mdf  和  .ldf 这两个文件   所有任务---分离数据库     附加数据库:   ---备份和恢复 备份数据库不会影响原数据库的使用;   备份数据库会形成bac...

MySQL Workbench 怎么创建数据库

第1步:单击MySQLWorkbench.exe快捷方式,弹出MySQLWorkbench界面 第2步:单击菜单栏Database按钮,弹出下拉菜单,单击Connect to Database,第3步:单击OK按钮,输入数据库密码第4步:单击工具栏按钮(第四个,即鼠标放在 上面显示Create a new schema in the connected s...

数据库SQL SERVER 2008R2 远程连接配置说明

SQL SERVER 2008 R2如何开启数据库的远程连接 环境要求: 首先准备好一台安装好SQL SERVER2008 R2的服务器。(仅适用于SQL SERVER2008 R2版本) 数据库远程建立步骤: 第一部分:在安装SQL Server 2008 R2的计算机上,点击开始 1选择程序中的“Microsoft SQL Server 2008 R2...