- 浏览: 235774 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (172)
- J2SE学习模块 (35)
- Oracle学习模块 (12)
- Jsp学习模块 (11)
- Servlet学习模块 (1)
- Tomcat 模块 (4)
- Struts1.x学习模块 (5)
- Spring学习模块 (2)
- Hibernate学习模块 (11)
- XML学习模块 (1)
- UML学习模块 (0)
- 算法学习模块 (6)
- 设计模式模块 (2)
- Mysql学习模块 (1)
- SQL_Server学习模块 (8)
- 项目开发模块 (10)
- 搜索引擎 (14)
- 开发工具的使用 (2)
- 面试题集 (7)
- 开发工具 (8)
- Linux (5)
- JavaFX模块 (1)
- 程序与人生 (4)
- 计算机网络 (6)
- EJB学习模块 (1)
- javascript常用模块 (2)
- 英语学习 (1)
- 程序变量命名的几条法则:匈牙利命名法 (1)
- 驼峰式大小写 (1)
- 帕斯卡命名法 (1)
- Jquery控制图片宽度及高度 (1)
- 喜讯--FireFox7.01已经支持CSS中 text-overflow ellipsis 属性 (1)
- 遍历 Map 的三种 常用方法 java (1)
- JDK自带工具Jstat (1)
- 提高 Oracle 查询 效率 建议 (1)
- 常用工具 (1)
最新评论
-
a465492689:
挺好,谢谢分享
存储过程 -
huangqinghe:
ding 顶~~~
Intellij Idea12 中文乱码问题总结 -
Redpick13:
楼主好人啊,有耐心
Java中的二维数组的定义与学习 -
dandongsoft:
神鼎飞丹砂
java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex -
devil__lord:
不错讲得很清楚 color=#cff
Java中的二维数组的定义与学习
最近工作中遇到了许多用表生成器TableGenerator来生成主键的项目,刚接触的朋友可能对TableGenerator 表生成器还不是很了解,因为大家如果是个人做项目练习着来玩的话,基本上都是用自增来实现TableGenerator 表生成器的功能。下面为大家来讲解一下,并附带实例;
首先,我们一起来看一下Java EE 5框架API文档的描述:
javax.persistenceAnnotation Type TableGenerator
Javax.persistence包下注解类型:TableGenerator 意思是说,TableGenerator是用来注解用的,而不是像我们平常所用的类那样:new TableGenerator();
因此,它的定义是:public @interface TableGenerator
说明:定义@interface的类型是注解类型.
接着:
This annotation defines a primary key generator that may be referenced by name when a generator element is specified for the GeneratedValue annotation. A table generator may be specified on the entity class or on the primary key field or property. The scope of the generator name is global to the persistence unit (across all generator types).
@TableGenerator注解定义了主键生成器,当@GeneratedValue的属性'generator' 与@TableGenerator的属性'name'相同时,将引用这个表生成器。一个表产生器可能在实体类别或最初的主键域或特性上被指定, 产生器的名字对持久组件的实体。
Go on...
实例:
说明:在上面的User实体中,在定义的开始就已经用@Entity注解了User类,@Table(name="lucene_user") 注解说明了,实体User对应的数据库表名为:lucene_user.
创建表生成器数据表:tb_generator
接着插入一条数据,以下要用到:
重点,主键的登场:
@TableGenerator表生成器名称为:UserGen,数据库的表为:tb_generator 创建新的实体后"user_pk"的value的值将自动加1。
@GeneratedValue声明了表的生成策略及引用的表生成器。
再看官方Api的实例:
详细:@TableGenerator表生成器属性
l name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中。
l table属性表示表生成策略所持久化的表名,例如,这里表使用的是数据库中的“tb_generator”。
l catalog属性和schema具体指定表所在的目录名或是数据库名。
l pkColumnName属性的值表示在持久化表中,该主键生成策略所对应键值的名称。例如在“tb_generator”中将“gen_name”作为主键的键值
l valueColumnName属性的值表示在持久化表中,该主键当前所生成的值,它的值将会随着每次创建累加。例如,在“tb_generator”中将“gen_value”作为主键的值
l pkColumnValue属性的值表示在持久化表中,该生成策略所对应的主键。例如在“tb_generator”表中,将“gen_name”的值为“CUSTOMER_PK”。
l initialValue表示主键初识值,默认为0。
l allocationSize表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50。
@TableGenerator的优点:
1.适用于任何的数据库
2.方便管理主键
3.避免了数据库兼容性带来的一系列的问题.
首先,我们一起来看一下Java EE 5框架API文档的描述:
javax.persistenceAnnotation Type TableGenerator
Javax.persistence包下注解类型:TableGenerator 意思是说,TableGenerator是用来注解用的,而不是像我们平常所用的类那样:new TableGenerator();
因此,它的定义是:public @interface TableGenerator
说明:定义@interface的类型是注解类型.
接着:
This annotation defines a primary key generator that may be referenced by name when a generator element is specified for the GeneratedValue annotation. A table generator may be specified on the entity class or on the primary key field or property. The scope of the generator name is global to the persistence unit (across all generator types).
@TableGenerator注解定义了主键生成器,当@GeneratedValue的属性'generator' 与@TableGenerator的属性'name'相同时,将引用这个表生成器。一个表产生器可能在实体类别或最初的主键域或特性上被指定, 产生器的名字对持久组件的实体。
Go on...
实例:
......... @Entity @Table(name="lucene_user") public class User { @Id @GeneratedValue(strategy=GenerationType.TABLE,generator="UserGen") @TableGenerator(name="UserGen",table="tb_generator", pkColumnName="gen_name",pkColumnValue="user_pk", allocationSize=1) private int id; @Column(name="user_id") private int userId; @Column(name="name") private String name; ......set和get方法...... }
说明:在上面的User实体中,在定义的开始就已经用@Entity注解了User类,@Table(name="lucene_user") 注解说明了,实体User对应的数据库表名为:lucene_user.
创建表生成器数据表:tb_generator
create table tb_generator( id int(20) unsigned not null auto_increment, gen_name varchar(255) not null, gen_value int(20) not null, primary key (id) );
接着插入一条数据,以下要用到:
insert into tb_generator(gen_name,gen_value) values('user_pk',1);
重点,主键的登场:
@Id @GeneratedValue(strategy=GenerationType.TABLE,generator="UserGen") @TableGenerator(name="UserGen",table="tb_generator", pkColumnName="gen_name",pkColumnValue="user_pk", allocationSize=1) private int id;
@TableGenerator表生成器名称为:UserGen,数据库的表为:tb_generator 创建新的实体后"user_pk"的value的值将自动加1。
@GeneratedValue声明了表的生成策略及引用的表生成器。
再看官方Api的实例:
Example 1: @Entity public class Employee { ... @TableGenerator( name="empGen", table="ID_GEN", pkColumnName="GEN_KEY", valueColumnName="GEN_VALUE", pkColumnValue="EMP_ID", allocationSize=1) @Id @GeneratedValue(strategy=TABLE, generator="empGen") public int id; ... } Example 2: @Entity public class Address { ... @TableGenerator( name="addressGen", table="ID_GEN", pkColumnName="GEN_KEY", valueColumnName="GEN_VALUE", pkColumnValue="ADDR_ID") @Id @GeneratedValue(strategy=TABLE, generator="addressGen") public int id; ... }
详细:@TableGenerator表生成器属性
l name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中。
l table属性表示表生成策略所持久化的表名,例如,这里表使用的是数据库中的“tb_generator”。
l catalog属性和schema具体指定表所在的目录名或是数据库名。
l pkColumnName属性的值表示在持久化表中,该主键生成策略所对应键值的名称。例如在“tb_generator”中将“gen_name”作为主键的键值
l valueColumnName属性的值表示在持久化表中,该主键当前所生成的值,它的值将会随着每次创建累加。例如,在“tb_generator”中将“gen_value”作为主键的值
l pkColumnValue属性的值表示在持久化表中,该生成策略所对应的主键。例如在“tb_generator”表中,将“gen_name”的值为“CUSTOMER_PK”。
l initialValue表示主键初识值,默认为0。
l allocationSize表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50。
@TableGenerator的优点:
1.适用于任何的数据库
2.方便管理主键
3.避免了数据库兼容性带来的一系列的问题.
发表评论
-
巧用JDK自带工具Jstat查看Gc垃圾回收之使用方法
2012-07-19 09:40 3862如何查看JVM中内存使用情况如何? JVM垃圾回收是否正常? ... -
遍历Map的三种常用方法 java
2011-11-09 12:06 28521、一般的map定义: Map<Key, Object& ... -
程序变量命名的几条法则:匈牙利命名法,驼峰式大小写,帕斯卡命名法
2011-09-07 17:54 50801.匈牙利命名法的好处: ... -
JDK源码中对当前时间的一些用法
2011-09-05 14:51 1033JDK源码中对当前时间的一些用法: String[] ... -
Eclipse安装反编译工具查看Jar包源码 JD Eclipse插件
2011-08-24 10:37 5051如何在Eclipse中安装反编译工具查看Jar包源码呢? 打 ... -
Struts2图片上传成功后,异常:java.lang.IllegalStateException
2011-07-10 18:49 19111.场景: 使用Struts2图片上传成功后出现异常: ... -
Spring Hibernate Extjs开发指南
2011-03-23 18:08 944从学习到找工作,然后再面试,最后才经历上班; 从这段时间对自 ... -
获取当前时间的前三个月 java
2011-03-17 11:14 4667获取当前时间的前三个月: Date date = n ... -
java 线程的状态与控制
2010-12-16 20:54 1090一、线程的状态 线程的主要状态有: 1.新 ... -
MyEclipse Blue 6.5 注册码 可到2013年12月
2010-12-06 09:44 1488做Java软件开发的,首选的软件工具莫非是MyEclip ... -
关于 Java Collections API 您不知道的 5 件事,第 2 部分
2010-10-24 00:28 487简介: 您可以在任何地方使用 Java™ 集合,但是一定要小心 ... -
关于 Java 常用工具您不知道的 5 件事
2010-10-24 00:25 482简介: 有些 Java™ 工具无法分类,只能算作 “有用的东西 ... -
关于 JVM 命令行标志您不知道的 5 件事
2010-10-24 00:22 712简介: Java™ 虚拟机有数百个命令行选项,被经验丰富的开发 ... -
关于 Java Database Connectivity 您不知道的 5 件事
2010-10-24 00:21 474简介: JDBC,即 Java™ Database Conne ... -
关于 Java Scripting API 您不知道的 5 件事
2010-10-24 00:17 549简介: Java™ 语言足以满足您的一些项目的需求,但是脚本语 ... -
关于 Java 性能监控您不知道的 5 件事,第 2 部分
2010-10-24 00:15 526简介: 如果 JDK 中配置有全功能分析器 JConsole ... -
关于 Java 性能监控您不知道的 5 件事,第 1 部分
2010-10-24 00:13 722简介: 责怪糟糕的代码 ... -
关于 JAR 您不知道的 5 件事
2010-10-24 00:11 381简介: 除了一些基础的 JAR 之外,许多 Java™ 开发人 ... -
关于 java.util.concurrent 您不知道的 5 件事,第 2 部分
2010-10-24 00:05 443简介: 除了具有很好的并发性的 Collections,jav ... -
关于 java.util.concurrent 您不知道的 5 件事,第 1 部分
2010-10-24 00:02 459简介: 编写能够良好执行,防止应用程序受损的多线程代码是很艰巨 ...
相关推荐
NULL 博文链接:https://mqyl1.iteye.com/blog/1098358
JPA的基本注解主要包括@Entity、@Table、@Id、@GeneratedValue、@Basic、@Column、@Transient、@Temporal和@TableGenerator等。
这是JPA标签配置手册,从ORACLE官方得到的资料,里面对JPA所有的标签都进行详细的说明。 Index of Annotations ...o @TableGenerator o @Temporal o @Transient • U o @UniqueConstraint • V o @Version
JPA注解1.1 @Entity1.2 @Table1.3 @Id1.4 @GeneratedValue1.5 @Basic1.6 @Column1.7 @Transient1.8 @Temporal1.9 @TableGenerator 1. JPA注解 1.1 @Entity 标注在实体类上,表示此类对应一个数据表。 1.2 @Table 与...
通过@SequenceGenerator 和 @TableGenerator 可以配置不同的 identifier 生成器。 table="GENERATOR_TABLE" pk-column-name="key" value-column-name="hi" pk-column-value="EMP" allocation-size="20"/> //...
表格生成器-ST3插件甲崇高文本3插件用于将CSV状文本到其它可读表格格式在适当位置。 转换器内部的功劳 。 演示:安装将存储库克隆到Sublime Text“ Packages”目录中: git clone ...
探索 Hibernate 新 TableGenerator 机制 服务好“最后一公里”,高效CDN架构经验 探索推荐引擎内部的秘密 一起 select 引起的崩溃 课堂上传纸条如何防范中间人攻击? 程序人生 《9Tech访谈录》揭秘游戏王子白泽的...
javax.persistence.TableGenerator.class javax.persistence.Temporal.class javax.persistence.TemporalType.class javax.persistence.TransactionRequiredException.class javax.persistence.Transient.class ...