`

实体的基本映射

    博客分类:
  • JPA
阅读更多

 

JPA的三大核心组件  EntityManager ,实体 和 JPQL

 

 

虽然JPA可以用XML映射来管理实体与数据表之间的映射关系 ,但实际开发中,用Annotation 比较多

 

对于一个JPA实体来说,通常用如下两个Annotation来修饰

 

 

@Entity:被该Annotation 修饰的POJO就是一个实体,可以指定一个name属性(实体名称),可以不指定默认该类名为实 体名称

@Table:该Annotation指定实体所映射的表

 

@Table 的属性  

 

catalog

name

schema

uniqueConstraints   设置唯一约束

 

 

@Column为了指定某个属性所映射的数据列的详细信息,如,列名,列字段长等,用@Column修饰该属性

 

@Column属性

 

insertable

length

name

nullable

table

unique  是否具有唯一约束

updatable 

 

 

@Transient  修饰不想持久保持的Field

 

@Transient

private String content;   //值不会保存到数据表中

 

@Enumerated 修饰枚举类型的Field

 

假设有一个season.java枚举类

 

public enum Season{spring,summer,autumn,winter}

 

 

@Eunmerated(EnumType.ORDINAL)    //ordinal n.序数  ,

//有两种格式 EnumType.STRING 存储的是枚举的值,

//EnumType.ORDINAL存储的枚举的序列号,1,2,3,,

@Column(name="season")

private Season happenSeason;

 

@LOB  @Basic修饰大数据类型的Field

 

当实体的Field为byte[],Byte[]或者java.io.Serializable类型时 @Lob修饰的Field映射为底层的Bolb列

当实体的Field为char[],Character[],java.lang.String类型时,@Lob修饰的Field映射为底层的Clob列

 

 

@Lob

private byte[] pic;

 

 

保存pic的demo

 

File file = new File("img.png");

byte[] content = new byte[(int)file.length];

new FileInputStream(file).read(content);

person.setPic(content);   // 前面 ,setTitle, setName ,一样  后面保存一样

 

 

比如我现在要查person的name,不想看Person的pic 怎么办呢,JPA提供延迟加载 @Basic 修饰

 

@Basic 的属性  1.fetch (FetchType.EAGER   不使用延迟加载;FetchType.LAZY 使用延迟加载)

2.optional   指定Field映射的数据列是否允许null值。

 

  修改Person 实体如下

 

private String name;  // 这个以上的都不变

 

@Lob

@Basic(fetch=FetchType.LAZY)

private byte[] pic;

/////////////////////////////////////////////////////////////这样就OK 

 

@Temporal  修饰日期类型的Field

 

java 日期时间类型有两种 java.util.Date,   java.util.Calendar

 

数据库日期时间类型有    date, time ,datetime, timestamp

 

用Temporal 的value 属性  Temporal.DATE       Temporal.TIME      Temporal.TIMESTAMP 

 

分别对应数据的类型 

 

@Temporal(TemporalType.DATE)

private DATE birth;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    openjpa实体标识的生成策略

    JPA 充分利用了注释(Annotation)和对象/关系映射,为数据持久化提供了更简单、易用的编程方式。OpenJPA 是 Apache 组织提供的 JPA 标准实现。本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍...

    一个基于oralce java 的ibatis 映射文件生成工具

    在网上下的eclipse abator插件自感觉不好用, 自已写了一个 基于oracle的,支持生成序列,pojo ...四个基本方法,增删改查, 写的时候基于oracle11的,低版本的可能在到得字段注释 的地方会不兼容,自已改改或不加注释就可以了

    【原创】Ye's ProE映射键全套分享(ProE快捷键大全,附布局表格和代码,ProE快捷键设置经验)不妨一看

    本套ProE映射键布局针对情况为:主要用零件、组装,少量钣金、工程图,常用基本建模、拔模、测量、剖面,由此出发,参阅多份前人的映射键布局设置,经若干次修改而成。文件包括一份布局表格,一份代码(两百余映射键...

    自动生成实体类的Controller, Service, ServiceImpl, Repository

    javaWeb 工具,根据entity自动生成实体类的Controller, Service, ServiceImpl, Repository。并拥有基本的增删改查,是快速搭建网站的工具类

    Hibernate映射继承关系的三种方案.docx

    在一些项目中,会采用集成的关系来定义数据库实体类,比如:人(Person)与学生(Student),学生来源与人,所以人的基本属性学生也拥有;但学生有的一些属性,人就不具有。人与学生之间很显然就拥有了继承关系 ------...

    java-dto-mapping:Java的通用DTO映射

    您需要以某种方式将所有属性从基本实体映射到DTO实体,反之亦然,如果您无需手动映射属性即可自动执行此操作,那将是很好的选择。 这是我们可以使用ModelMapping实现的方法... 项目结构。 用户模型 在这里,我们有...

    JAVA基础知识点HTML格式教程编程实例20000源代码

    协会覆写、属性覆写、基本法、二进制数据、级联事件、列 日期日历、删除、EJB查询语言(45)、嵌入式、嵌入式Id、实体生命周期 实体管理器、实体监听、枚举、撷取、查找、生成原密钥 继承、列链接、锁、多对多映射、多...

    mybatis和mybatis plus比较详解

    # 1. 前言 本文旨在探讨在SpringBoot框架下,...MyBatis在使用时需要开发者手动解析实体关系映射并转换为MyBatis内部对象注入容器,而MyBatis Plus则能够自动解析实体关系映射,并提供了内置的Mapper和通用的Service

    JPA核心知识总结

    JPA核心知识总结 详解 spring JPA

    MyBatis基本使用总结

    MyBatis基本使用总结 Mybatis 的核心配置文件于实体类的映射文件,mapper 代理动态代理的调用方法。

    mybatis实体类生成工具

    mybatis实体类生成工具,mybatis优点: 简单: 易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 实用: 提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了...

    mybatis基本使用

    以下是一个基本的 MyBatis 测试使用的描述: 1. 环境准备 首先,确保你已经安装了 Java 和 Maven,并且有一个可用的数据库环境(如 MySQL)。然后,在 Maven 项目中添加 MyBatis 的依赖。 2. 配置 MyBatis 在项目的 ...

    hibernate annotation帮助文档

    声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2.3. 嵌入式对象(又名组件) 2.2.2.4. 无注解之属性的默认值 2.2.. 映射主键属性 2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 ...

    基于深度学习的简历信息实体抽取方法.pdf

    基于深度学习的简历信息实体抽取方法.pdf 该论文提出了一种基于深度学习的简历信息实体抽取方法,旨在解决传统的简历信 息实体抽取方法泛化能力差、难以维护的问题。该方法通过将非结构化的简历文本信 息处理为词...

    Dapper-Extensions:Dapper Extensions是一个小型库,通过为POCO添加基本的CRUD操作(获取,插入,更新,删除)来补充Dapper。 对于更高级的查询方案,Dapper Extensions提供了谓词系统。 该库的目的是通过不需要任何属性或基类继承来保持POCO的纯净

    介绍 Dapper Extensions是一个小型库,通过为POCO添加基本的CRUD操作... 通过使用定制的实体表映射。 复合主键支持。 支持单数和复数表名(默认情况下为单数)。 易于使用的用于更高级的场景。 在生成SQL中正确转义

    hibernate学习笔记

    hibernate基本映射(hibernate_basemapping) 4 class实体类---表 4 标签id 5 主键生成器Generator 6 多对一, 一对一, 一对多, 多对多 7 hibernate多对一关联映射(Hibernate_Many2One) 7 hibernate一对一主键关联...

    MongoDB基本操作指南

    在MongoDB中,不强调一定对数据进行Normalize ,很多场合都建议De-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个Collection,只需定义最顶级的class。MongoDB的文档...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.1.1 Java基本类型的Hibernate映射类型  11.1.2 Java时间和日期类型的Hibernate映射类型  11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用...

    第1章准备源代码阅读环境与Hibernate的基本配置

    本章除了讲解如何搭建源代码阅读环境,还介绍了Hibernate项目的基本配置、详细的实体映射配置等内容,详细的Hibernate项目配置将在第二章讲解。对于熟识Hibernate开发的读者,可以只看本章小结给出建议内容即可。1.2...

    好记性不如烂笔头——数据表与简单Java类映射转换

    数据表与简单Java类的基本映射关系: 数据实体表设计=类的定义; 表中的字段=类的成员属性; 表的外键关联=引用关联 表的一行记录=类的一个实例化对象; 表的多行记录=对象数组; 原创文章 7获赞 4访问量 242 ...

Global site tag (gtag.js) - Google Analytics