基本注解

  1、@Entity :用于添加在实体类上,定义该JAVA类成为被JPA管理的实体,将映射到指定的数据库表。如定义一个实体类Category,它将映射到数据库中的category表中。

  2、@Id :定义属性为数据库表中的主键列,一个实体里面必须有一个。

  3、@Table:指定数据库的表名,与@Entity一同使用。

      属性name:表的名字,如果不写,系统认为和实体类一致。

      属性catalog,schema用于设置目录和此表所在schema,一般不需要填写;

      属性uniqueConstraints,唯一性约束,只有创建表的时候有用,默认不需要;

      属性indexes,索引,只有创建表的时候有用,默认不需要。

  4、@Basic:表示属性是到数据库表字段的映射。如果实体的字段上没有任何注解,默认即为@Basic;

      属性fetch,抓取方式,默认FetchType.EAGER(立即加载),FetchType.LAZY(延迟加载,主要应用在大字段上面);

      属性optional,设置这个字段是否可以为null,默认是true。

  5、@Transient:非持久化属性,表示该属性并非是一个到数据库表的字段的映射,与@Basic作用相反。JPA映射数据库的时候忽略它。

  6、@Column:定义该属性对应数据库中的列名。

      属性name,数据库中的列名。如果不写默认和实体属性名一致;

      属性unique,是否唯一。默认false;

      属性nullable,是否允许为空。默认为true;

      属性insertable,执行insert操作的时候是否包含此字段,默认为true;

      属性updatable,执行updatable操作的时候是否包含此字段,默认为true;

      属性columnDefinition,表示该字段在数据库中的实际类型。

      属性length,数据库字段的长度,默认255;

      属性table,precision,scale,我没用到过,一般不设置。

  7、@GeneratedValue:主键生成策略。

      属性strategy,id的生成策略,GenerationType.TABLE,通过表产生主键,框架由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植;GenerationType.SEQUENCE,通过序列产生主键,通过@SequenceGenerator注解指定序列名,MySql不支持这种方式;GenerationType.IDENTITY,数据库id自增长,多用于MySql;GenerationType.AUTO,JPA自动选择合适的策略,默认选项。

      属性generator:通过Sequence生成id,常见Orcale数据库id生成,需要配合@SequenceGenerator使用。

  8、@Temporal:用来设置Date类型的属性映射到对应精度的字段。TemporalType.DATE,映射为数据库date,TemporalType.TIME映射为数据库time,TemporalType.TIMESTAMP,映射为datetime。(jdk8的话,可以使用新的时间类来替代Date)

  9、@Enumerated:映射枚举字段。属性value,默认是EnumType.ORDINAL(枚举字段的下标),EnumType.STRING枚举字段的Name;应用如下

        

  10、@Lob,将属性字段映射成数据库支持的大对象类型,支持一下两种数据库类型的字段。

      Clob(Character Large Objects)类型是长字符串类型,java.sql.Clob、Character[]、char[]和String将被映射成Clob类型。

      Blob(Binary Large Objects)类型是字节类型,java.sql.Blob、Byte[]、byte[]和实现了Serializable接口的类型将被映射为Blob类型。

      由于Clob、Blob占用内存空间较大,一般配合@Basic(fetch=FetchType.LAZY)将其设置为延迟加载。

  11、@IdClass:利用外部类的联合主键。

      外部类要符合一下几点:必须实现java.io.Serializable接口;必须有默认的无参构造函数;必须覆盖equals和hashCode方法。    

          

      实体类要,在类上添加@IdClass并指定外部主键类,每个主键上都要添加@Id注解。

          

      Repository接口要把主键改为外部主键类。

          

      使用如下

      

源码地址:https://github.com/caofanqi/study-spring-data-jpa

      

学习Spring-Data-Jpa(二)---JPA基本注解的更多相关文章

  1. 一步步学习 Spring Data 系列之JPA(一)

    引入: Spring Data是SpringSource基金会下的一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服 ...

  2. 一步步学习 Spring Data 系列之JPA(二)

    继上一篇文章对Spring Data JPA更深( )一步剖析. 上一篇只是简单的介绍了Spring Data JPA的简单使用,而往往在项目中这一点功能并不能满足我们的需求.这是当然的,在业务中查询 ...

  3. Spring Data(二)查询

    Spring Data(二)查询 接着上一篇,我们继续讲解Spring Data查询的策略. 查询的生成 查询的构建机制对于Spring Data的基础是非常有用的.构建的机制将截断前缀find-By ...

  4. spring AOP 之二:@AspectJ注解的3种配置

    @AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ...

  5. 学习Spring Data JPA

    简介 Spring Data 是spring的一个子项目,在官网上是这样解释的: Spring Data 是为数据访问提供一种熟悉且一致的基于Spring的编程模型,同时仍然保留底层数据存储的特​​殊 ...

  6. Spring Data Jpa (二)JPA基础查询

    介绍Spring Data Common里面的公用基本方法 (1)Spring Data Common的Repository Repository位于Spring Data Common的lib里面, ...

  7. 学习-spring data jpa

    spring data jpa对照表 Keyword Sample JPQL snippet And findByLastnameAndFirstname - where x.lastname = ? ...

  8. Spring Data系列之Jpa(一)

    1.Spring Data的由来 Spring Data是SpringSource基金会创下的一个简化数据库访问.支持云服务的开源框架.其主要目的是让数据库访问变的方便快捷,可以用Spring Dat ...

  9. 深入学习Spring框架(二)- 注解配置

    1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...

  10. Spring入门(二)— IOC注解、Spring测试、AOP入门

    一.Spring整合Servlet背后的细节 1. 为什么要在web.xml中配置listener <listener> <listener-class>org.springf ...

随机推荐

  1. Java开发笔记(一百二十)AWT文本标签

    前面介绍了AWT窗口及其面板的简单用法,其中展示出来的控件只有按钮一种,还有很多好用好玩的控件有待介绍.首先是文本标签Label,该控件用于显示一段平铺文本,它不花哨也不跳动,完全就是素面朝天的文本字 ...

  2. python大数据挖掘和分析的套路

    大数据的4V特点: Volume(大量):数据巨大. Velocity(高速):数据产生快,每一天每一秒全球人产生的数据足够庞大且数据处理也逐渐变快. Variety(多样):数据格式多样化,如音频数 ...

  3. 按键消抖——task任务和仿真平台搭建

    一.按键抖动原理 按键抖动原理:按键存在一个反作用弹簧,因此当按下或者松开时均会产生额外的物理抖动,物理抖动会产生电平的抖动. 消抖方法:一般情况下,抖动的总时间会持续20ms以内,按下按键后,等20 ...

  4. LOJ2267 SDOI2017 龙与地下城 FFT、概率密度函数、Simpson

    传送门 概率论神仙题-- 首先一个暴力做法是设\(f_{i,j}\)表示前\(i\)个骰子摇出点数和为\(j\)的概率,不难发现DP的过程是一个多项式快速幂,FFT优化可以做到\(O(XYlog(XY ...

  5. 在右键菜单中添加用Jupyter Notebook打开

    在右键菜单中添加用Jupyter Notebook打开 为了把 Jupyter 的工作目录指定到某一个文件夹下,每次都要启动 CMD 终端, 然后激活 Anaconda 环境,再启动 Jupyter ...

  6. [jsp学习笔记]jstl标签的使用

    jstl常用在html嵌套 <body> <% session.setAttribute("q", "yushi"); request.set ...

  7. webapi session

    webapi中使用session 修改global.cs里面的内容 using System; using System.Web; using System.Web.Routing; using Sy ...

  8. Java并发多线程面试题 Top 50

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...

  9. 解决SecureCRT 中文乱码??

    在linux服务器上搭建solr,用的是SecureCRT  连接linux服务器,发现不能输入中文,配置文件中的中文也是乱码:先以为是SecureCRT工具编码的问题,把编码改成utf-8之后发现还 ...

  10. web.config 研究

    一.将配置映射成类 1.配置中增加 <configSections> <section name="appConfiguration" type="Oi ...