`
sha1064616837
  • 浏览: 40468 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

JPA annotation笔记

    博客分类:
  • JPA
阅读更多
annotation可以写在子属性上或者属性的getter方法上
@MappedSuperclass:用在父类上面,继承后,多个继承,生成多个表。而@Entity,则继承后,多个类继承,只会生成一个表

@Inherited:允许子类继承父类的注解

@Documented:在生成javadoc文档的时候将该Annotation也写入到文档中。

@Target:表示的是这个Annotation可以应用在哪里:@Target({ElementType.FIELD,ElementType.METHOD}):只能用在子属性上、方法上的限制,ElementType.TYPE:表示只能用在类上

@Retention(RetentionPolicy.RUNTIME )修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时,所以他们可以用反射的方式读取。RetentionPolicy.RUNTIME 可以让你从JVM中读取Annotation注解的信息,以便在分析程序的时候使用.

@interface:自定义Annotation

@Entity:映射实体
实体必须有一个无参的构造方法;
实现Serializable接口,建议每一个Entity都实现该接口;

@Id:标记主键
@GeneratedValue:指明主键生成策略
JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。
@GeneratedValue(strategy = GenerationType.AUTO)

@Column:所持久化属性所映射表中的字段
name 可选,字段名(默认值是属性名)
unique 可选,是否在该字段上设置唯一约束(默认值false)
nullable 可选,是否设置该字段的值可以为空(默认值false)
insertable 可选,该字段是否作为生成的insert语句中的一个字段(默认值true)
updatable 可选,该字段是否作为生成的update语句中的一个字段(默认值true)
columnDefinition 可选: 为这个特定字段覆盖sql DDL片段 (这可能导致无法在不同数据库间移植)
table 可选,定义对应的表(默认为主表)
length 可选,字段长度(默认值255)
precision 可选,字段数字精精度(默认值0)
scale 可选,如果字段数字刻度可用,在此设置(默认值0)

@Enumerated标注枚举类型
  因为枚举类型的有名称和值两个属性,所以在持久化时可以选择持久化名称或是持久化值。通过EnumType来定义
  @Enumerated(EnumType.STRING)持久化的为枚举类型的名称
  @Enumerated(EnumType.ORDINAL)持久化的为枚举类型的值(默认)

@Temporal:日期注解
1) DATE :等于java.sql.Date
2) TIME :等于java.sql.Time
3) TIMESTAMP :等于java.sql.Timestamp
1.日期:
@Temporal(TemporalType.DATE)
@Column(name = "applyDate", nullable = false, length = 10)
public Date getApplyDate() {
  return applyDate;
}
在页面端取值:2014-09-23

2.时间:
@Temporal(TemporalType.TIME)在页面端取值:22:50:30

3.日期和时间(默认):
@Temporal(TemporalType.TIMESTAMP)
在页面端取值:2014-09-23 22:51:34:000

@OneToOne:一对一

@OneToMany:一对多
映射策略
# 外键关联:两个表的关系定义在一个表中;
# 表关联:两个表的关系单独定义一个表中通过一个中间表来关联。
casade:
CascadeType.PERSIST (级联新建)
·CascadeType.REMOVE (级联删除)
·CascadeType.REFRESH (级联刷新)
·CascadeType.MERGE (级联更新)中选择一个或多个。
·还有一个选择是使用CascadeType.ALL ,表示选择全部四项
targetEntity:many端
fetch:该实体的加载方式,有两种:LAZY和EAGER,默认为LAZY
mappedBy:属性用于双向关联实体时使用,由One的一方指向Many的一方,并且,这个属性应该等于Many的一方中含有One类的属性的属性名,否则会出错啦
在多端加入:orphanremoval=true(孤值删除)配置

@ManyToMany:多对多



@JoinColumn标记不仅能够与@OneToOne使用,也可以@ManyToOne或@ManyToMany标记同时使用
@JoinColumn与@Column标记一样,是用于注释表中的字段的。它的属性与@Column属性有很多相同之处
@JoinColumn与@Column相区别的是:@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上。而@Column标注的是表中不包含表关系的字段。
分享到:
评论

相关推荐

    Hibernate Annotation笔记

    此外,还需要添加Hibernate Annotations库以及JPA API库。如果使用Maven管理项目依赖,则可以在`pom.xml`文件中添加以下依赖项: ```xml <groupId>org.hibernate <artifactId>hibernate-core <version>5.x....

    Hibernate Annotation 学习笔记

    **Hibernate Annotation 学习笔记** Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库。Annotation 在 Hibernate 中扮演着关键角色,它们为数据库对象提供了元数据...

    Java工作笔记-JPA中使用@query注解(分页查询实例)

    本篇工作笔记将深入探讨如何在JPA中使用@Query进行分页查询,并通过一个实例来展示其具体应用。 首先,我们需要了解分页查询的基本概念。在处理大量数据时,为了提高用户体验和性能,通常不会一次性加载所有记录,...

    spring笔记

    目前除了Hibernate之外,还有多个流行的O/R框架,如TopLink、JDO(Java Data Objects)、JPA(Java Persistence API)。这些框架各有特点,但核心目标一致,即简化Java与数据库之间的操作。 3. Hibernate基础配置 ...

    ejb学习笔记

    EJB3作为EJB规范的一个重大升级,引入了注解(Annotation),简化了编程模型,提高了开发效率。 ### EJB的类型 #### Stateless Session Bean Stateless Session Bean不保留任何会话状态,每次方法调用都视为一个新...

    韩顺平java笔记完整版

    【Java编程基础知识】 ...韩顺平老师的笔记很可能还涉及了实际项目开发中的最佳实践、设计模式以及Java EE的相关知识,如Servlet、JSP、EJB、JPA、Spring框架等。这些内容对于理解和提升Java开发技能至关重要。

    java学习笔记(文字整理版).doc

    - **常见的O/R框架**:介绍了几种常见的O/R映射框架,如Hibernate、TopLink、JDO、JPA等。 - **Hibernate基础配置**: - **项目搭建**:创建Java项目,并引入必要的库文件,如Hibernate库、MySQL JDBC驱动等。 - *...

    springboot学习笔记

    ### Spring Boot 学习笔记知识点总结 #### 一、Spring 的发展历程 1. **Spring 1.x 时代:** - 特征:主要通过 XML 文件来管理 Bean 的声明周期和依赖关系。 - 实践问题:随着项目规模的增长,XML 配置变得异常...

    Java/JavaEE 学习笔记

    第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML Namespaces................111 第四章 XML ...

    springboot_笔记

    ### Spring Boot 学习笔记概览 #### 一、Spring 的发展历程 1. **Spring 1.x 时代** - 在Spring框架发展的初期(即Spring 1.x时代),主要采用XML文件来进行bean的配置。这种方式简洁且易于理解,但随着项目的...

    springboot核心源码码解析笔记.rar_involvedwyg_springboot实战

    6. **条件注解(Conditional Annotation)**:如`@ConditionalOnClass`、`@ConditionalOnBean`等,它们允许SpringBoot在满足特定条件时才注册Bean。这使得自动配置更加灵活和精准。 7. **健康检查(Actuator)**:...

    百知教育spring笔记

    ### 百知教育Spring笔记知识点解析 #### 一、数据源配置详解(DataSource) 在Spring框架中,数据源(DataSource)是连接数据库的关键组件之一,它负责管理与数据库的连接池,提供高效的数据库访问能力。从给定的...

    java自学笔记

    - **JPA/Hibernate**:学习ORM(对象关系映射)技术,使用JPA或Hibernate简化数据库操作。 7. 实战项目 - **案例分析**:通过实际的小型项目,将所学知识融会贯通,提高编程能力。 这份笔记将带领读者逐步走进...

    Spring2.5_学习笔记.doc.zip

    首先,Spring2.5引入了基于注解的配置(Annotation-based Configuration),这极大地简化了XML配置文件的编写,使得应用程序的装配过程更加直观和简洁。开发者可以通过在类或方法上添加如@Service、@Repository、@...

    J2EE学习笔记(J2ee初学者必备手册)

    第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 JavaEE@xuxiang 2 Java/JavaEE学习笔记Jonny xuxiang5612@sina.com 第一章 XML Overview....................107 第二章 DTD.........

    Hibernate学习笔记(1-13)

    12. **与JPA的集成(annotation方式)**: - Hibernate也支持Java Persistence API(JPA),可以通过注解的方式定义实体类和映射。 13. **最佳实践**: - 包括合理的对象模型设计、有效的查询策略、缓存配置优化...

    Hibernate学习笔记

    - **JPA(Java Persistence API)**: Hibernate作为JPA的提供商,提供了标准的ORM接口,使得代码更具可移植性。 以上是对Hibernate学习笔记的概览,通过深入理解和实践,开发者可以有效地利用Hibernate提升Java...

    JAVA-hibernate笔记

    除了基础内容,课程可能还会涉及更多高级主题,如二级缓存、CGLIB动态代理、JPA规范等,以帮助你全面掌握Hibernate。 **学习风格** - **先脉络,后细节** 先整体理解Hibernate的工作流程和核心概念,再深入研究...

    springboot_笔记.docx

    Spring Boot是Spring Framework的一个扩展,旨在简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,开发者可以通过简单的步骤快速创建生产级别的...

    Hibernate_学习笔记.

    ### Hibernate学习笔记知识点详解 #### Hibernate简介 - **定义**:Hibernate是一种开源的对象关系映射(ORM)框架,用于在Java应用中简化数据库操作。 - **创始人**:由Gavin King于2001年创建。 - **作用**:提供...

Global site tag (gtag.js) - Google Analytics