ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:27.20KB ,
资源ID:10324078      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10324078.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(jpa注解手册.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

jpa注解手册.docx

1、jpa注解手册核心提示:JPA 注解的几个要点 1.设置Pojo为实体 Entity /标识这个pojo是一个jpa实体 public class Users implements Serializable 2.设置表名 Entity Table (name= users ) /指定表名为users public class Users implements Serializable 3.设置主键 public JPA 注解的几个要点 1.设置Pojo为实体 Entity /标识这个pojo是一个jpa实体 public class Users implements Serializable

2、2.设置表名 Entity Table(name = users) /指定表名为users public class Users implements Serializable 3.设置主键 public class Users implements Serializable Id private String userCode; 4. 设置字段类型 通过Column注解设置,包含的设置如下 .name:字段名 .unique:是否唯一 .nullable:是否可以为空 .inserttable:是否可以插入 .updateable:是否可以更新 .columnDefinition: 定义建表

3、时创建此列的DDL .secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字。 Column(name = user_code, nullable = false, length=32)/设置属性userCode对应的字段为user_code,长度为32,非空 private String userCode; Column(name = user_wages, nullable = true, precision=12, scale=2)/设置属性wages对应的字段为user_wages,12位数字可保留两位小数,可以为空private d

4、ouble wages; Temporal(TemporalType.DATE)/设置为时间类型 private Date joinDate; 5.字段排序 在加载数据的时候可以为其指定顺序,使用OrderBy注解实现 Table(name = USERS) public class User OrderBy(name = group_name ASC, name DESC) private List books = new ArrayList(); 6.主键生成策略 public class Users implements Serializable Id GeneratedValue(st

5、rategy=GenerationType.IDENTITY)/主键自增,注意,这种方式依赖于具体的数据库,如果数据库不支持自增主键,那么这个类型是没法用的 Column(name = user_id, nullable = false) private int userId; public class Users implements Serializable Id GeneratedValue(strategy=GenerationType.TABLE)/通过一个表来实现主键id的自增,这种方式不依赖于具体的数据库,可以解决数据迁移的问题 Column(name = user_code,

6、nullable = false) private String userCode; public class Users implements Serializable Id GeneratedValue(strategy=GenerationType.SEQUENCE)/通过Sequence来实现表主键自增,这种方式依赖于数据库是否有SEQUENCE,如果没有就不能用 SequenceGenerator(name=seq_user) Column(name = user_id, nullable = false) private int userId; 7.一对多映射关系 有T_One和T

7、_Many两个表,他们是一对多的关系,注解范例如下 主Pojo Entity Table(name = T_ONE) public class One implements Serializable private static final long serialVersionUID = 1L; Id Column(name = ONE_ID, nullable = false) private String oneId; Column(name = DESCRIPTION) private String description; OneToMany(cascade = CascadeType

8、.ALL, mappedBy = oneId)/指向多的那方的pojo的关联外键字段 private Collection manyCollection; 子Pojo Entity Table(name = T_MANY) public class Many implements Serializable private static final long serialVersionUID = 1L; Id Column(name = MANY_ID, nullable = false) private String manyId; Column(name = DESCRIPTION) pri

9、vate String description; JoinColumn(name = ONE_ID, referencedColumnName = ONE_ID)/设置对应数据表的列名和引用的数据表的列名 ManyToOne/设置在“一方”pojo的外键字段上 private One oneId; 8.多对多映射关系 貌似多对多关系不需要设置级联,以前用hibernate的时候着实为多对多的级联头疼了一阵子,JPA的多对多还需要实际的尝试一下才能有所体会。 估计JPA的多对多也是可以转换成两个一对多的。 第一个Pojo Entity Table(name = T_MANYA) public c

10、lass ManyA implements Serializable private static final long serialVersionUID = 1L; Id Column(name = MANYA_ID, nullable = false) private String manyaId; Column(name = DESCRIPTION) private String description; ManyToMany JoinTable(name = TMANY1_TMANY2, joinColumns = JoinColumn(name = MANYA_ID, referen

11、cedColumnName = MANYA_ID), inverseJoinColumns = JoinColumn(name = MANYB_ID, referencedColumnName = MANYB_ID) private Collection manybIdCollection; 第二个Pojo Entity Table(name = T_MANYB) public class ManyB implements Serializable private static final long serialVersionUID = 1L; Id Column(name = MANYB_I

12、D, nullable = false) private String manybId; Column(name = DESCRIPTION) private String description; ManyToMany(mappedBy = manybIdCollection) private Collection manyaIdCollection; 9.一对一映射关系 主Pojo Entity Table(name = T_ONEA) public class OneA implements Serializable private static final long serialVer

13、sionUID = 1L; Id Column(name = ONEA_ID, nullable = false) private String oneaId; Column(name = DESCRIPTION) private String description; OneToOne(cascade = CascadeType.ALL, mappedBy = oneA)/主Pojo这方的设置比较简单,只要设置好级联和映射到从Pojo的外键就可以了。 private OneB oneB; 从Pojo Entity Table(name = T_ONEB) public class OneB

14、implements Serializable private static final long serialVersionUID = 1L; Id Column(name = ONEA_ID, nullable = false) private String oneaId; Column(name = DESCRIPTION) private String description; JoinColumn(name = ONEA_ID, referencedColumnName = ONEA_ID, insertable = false, updatable = false)/设置从方指向主

15、方的关联外键,这个ONEA_ID其实是表T_ONEA的主键 OneToOne private OneA oneA; 10 大字段 Lob /对应Blob字段类型 Column(name = PHOTO) private Serializable photo; Lob /对应Clob字段类型 Column(name = DESCRIPTION) private String description; 11.瞬时字段 不需要与数据库映射的字段,在保存的时候不需要保存倒数据库 Transient private int tempValue; public int getTempValue() get

16、 tempValue; public void setTempValue(int value) this.tempValue = value; Java代码 Entity -声明为一个实体bean Table (name= promotion_info ) -为实体bean映射指定表(表名=promotion_info) Id -声明了该实体bean的标识属性 GeneratedValue -可以定义标识字段的生成策略. Transient -将忽略这些字段和属性,不用持久化到数据库 Column (name= promotion_remark )-声明列(字段名= promotion_tot

17、al ) 属性还包括(length= 200 等) Temporal (TemporalType.TIMESTAMP)-声明时间格式 Enumerated -声明枚举 Version -声明添加对乐观锁定的支持 OneToOne -可以建立实体bean之间的一对一的关联 OneToMany -可以建立实体bean之间的一对多的关联 ManyToOne -可以建立实体bean之间的多对一的关联 ManyToMany -可以建立实体bean之间的多对多的关联 Formula -一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等) Entity Tabl

18、e (name= promotion_info ) public class Promotion implements Serializable /AUTO-可以是identity类型的字段,或者sequence类型或者table类型,取决于不同的底层数据库 Id GeneratedValue (strategy = GenerationType.AUTO) private Long id; Column (name= group_start_amount ) private Integer groupStartAmount= 0 ; Column (name= promotion_remar

19、k ,length= 200 ) /Lob 如果是文章内容可以使用 只需要把length=200去掉就可以了 private String remark; /DATE - java.sql.Date /TIME - java.sql.Time /TIMESTAMP - java.sql.Timestamp Temporal (TemporalType.TIMESTAMP) Column (name= start_time ) private Date startTime; /显示0 隐藏1 public static enum DisplayType 显示,隐藏 Enumerated (val

20、ue = EnumType.ORDINAL) /ORDINAL序数 private DisplayType displayType = DisplayType.显示; Version private Integer version; /CascadeType.PERSIST - 触发级联创建(create) /CascadeType.MERGE - 触发级联合并(update) /FetchType.LAZY - 延迟加载 ManyToOne (cascade = CascadeType.PERSIST,CascadeType.MERGE,fetch = FetchType.LAZY) pri

21、vate PromotionGroup promotionGroup; /单向ManyToMany /JoinTable(关联的表名) /joinColumns - promotion关联的列的外键 /inverseJoinColumns - largess 关联列的外键 ManyToMany (cascade = CascadeType.PERSIST,CascadeType.MERGE) JoinTable (name= promotion_largess ,joinColumns= JoinColumn (name= promotion_id ),inverseJoinColumns=

22、JoinColumn (name= largess_id ) private Set largess; /get set 省略. Entity Table (name= promotion_group ) public class PromotionGroup implements Serializable Id GeneratedValue (strategy = GenerationType.AUTO) private Long id; /mappedBy的值promotionGroup指向owner(Promotion)端的关联属性,并且是双向关系 OneToMany (mappedBy

23、= promotionGroup ,cascade=CascadeType.ALL) private List promotion; /get set 省略. Entity Table (name= largess ) public class Largess implements Serializable Id GeneratedValue (strategy = GenerationType.AUTO) private Long id; /1.sql语句中的字段和表名都应该和数据库相应,而不是类中的字段, /若带有参数如la.id= id,这个=id才是类中属性 /2.操作字段一定要用别名

24、 Formula (select max(la.id) from largess as la) private int maxId; Formula (select COUNT(la.id) from largess la) private int count; Transient private String img /get set 省略. JPA注解 使用说明一概述author liuguangyi content ejb3注解的API定义在javax.persistence.*包里面。 注释说明: Entity 将一个类声明为一个实体bean(即一个持久化POJO类) Id 注解声明了

25、该实体bean的标识属性(对应表中的主键)。 Table 注解声明了该实体bean映射指定的表(table),目录(catalog)和schema的名字 Column 注解声明了属性到列的映射。该注解有如下的属性 name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true) updatable 可选,该列是否作为生成的update语句中的一个列(默认值true) columnDefiniti

26、on 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植) table 可选,定义对应的表(默认为主表) length 可选,列长度(默认值255) precision 可选,列十进制精度(decimal precision)(默认值0) scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0) GeneratedValue 注解声明了主键的生成策略。该注解有如下属性 strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO GenerationType.

27、AUTO 主键由程序控制 GenerationType.TABLE 使用一个特定的数据库表格来保存主键 GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型) GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。(这个值要与generator一起使用) generator 指定生成主键使用的生成器(可能是orcale中的序列)。 SequenceGenerator 注解声明了一个数据库序列。该注解有如下属性 name 表示该表主键生成策略名称,它被引用在GeneratedValue中设置的“gernerato

28、r”值中 sequenceName 表示生成策略用到的数据库序列名称。 initialValue 表示主键初始值,默认为0. allocationSize 每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50. GenericGenerator 注解声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性 name 指定生成器名称 strategy 指定具体生成器的类名(指定生成策略)。 parameters 得到strategy指定的具体生成器所用到的参数。 其十三种策略(strategy属性的值)如下: 1.native 对于orcale采用S

29、equence方式,对于MySQL和SQL Server采用identity(处境主键生成机制), native就是将主键的生成工作将由数据库完成,hibernate不管(很常用) 例:GeneratedValue(generator = paymentableGenerator) GenericGenerator(name = paymentableGenerator, strategy = native) 2.uuid 采用128位的uuid算法生成主键,uuid被编码为一个32位16进制数字的字符串。占用空间大(字符串类型)。 例:GeneratedValue(generator = paymentableGenerator) GenericGenerator(name = paymentableGenerator, strategy = uuid) 3.hilo 要在数据库中建立一张额外的表,默认表名为hibernate_unque_key,默认字段为integer类型,名称是next_hi(比较少用) 例:GeneratedValue(generator = paymentableGenerator) GenericGenerator(name = paymentableGenerator, strateg

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1