hibernate annotation 生成uuid主键】的更多相关文章

JPA标准方式下,不可以生成uuid类型的主键,但是hibernate提供了一些方式生成uuid主键,具体如下: 1.主键生成器     @GeneratedValue(generator="idGenerator") 2.通过注解方式生成一个generator     @GenericGenerator(name="idGenerator", strategy="uuid")     /** * annotation uuid * @autho…
持久化类 概述 持久化:将内存中的对象持久化到数据库中的过程就是持久化.Hibernate 就是用来进行持久化的框架. 持久化类:一个 Java 对象与数据库的表建立了映射关系,那么这个类在 Hibernate 中称为是持久化类. 也可以看作:持久化类 = JavaBean + 映射文件 编写规则 1.对持久化类提供一个无参构造方法. Hibernate 底层使用反射生成实例. 2.属性需要私有,对私有属性提供 public 的 get 和 set 方法. Hibernate 底层获取和设置对象…
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: hibernate的主键生成策略 UUID 配置的补充:hbm2ddl.auto属性用法 注解还是配置文件 hibernate注解的基本用法 使用Session API CRUD操作对象,以及对象状态的转换 hibernate缓存的概念 get()/load()的区别到底是什么,源码分析 代理模式实现的懒加载 saveOrUpdate()/merge()的区别 Assigned(常用,一般情况使用很方便):…
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g…
主键类型: 业务主键(natural key):业务主键的值是来源于一个业务数据. 代理主键(surrogate key):代理主键需要采用一种方式来生成某个唯一值. 代理主键的生成策略: 1.hibernate的主键生成策略只能用于代理主键 2.不同的主键生成策略需要的内容也是不同. Hibernate的主键生成策略: 1.assigned:由应用程序负责生成主键标识符,通常使用在数据库中没有代理主键,使用的主键与业务相关的情况,即使用的是业务主键.这种主键的生成方式不建议使用,在数据库表设计…
目录 0. 结构图 1. 持久化类的编写规则 1.1 持久化和持久化类 1.2 持久化类的编写规则 2. 主键生成策略 2.1 主键的分类 2.2 主键生成策略 3. 持久化类的三种状态[了解] 3.1 持久化类的三种状态 3.2区分三种持久化状态 3.3 持久化的三种状态的转换 3.3.1 持久态的三种状态转换图 3.3.2 瞬时态对象 3.3.3 持久态 3.3.4 托管态对象 3.3.5 持久态对象的特性 4. Hibernate的一级缓存 4.1 缓存概述 4.2 hibernate的缓…
http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英文名称是Persistent Object(简称PO),PO=POJO+hbm映射配置文件. 对于Hibernate中的PO,有如下编写规则: 必须提供一个无参数的public构造方法. 所有属性要用private修饰,对外提供public的get/set方法. 在PO类必须提供一个标识属性,让它与…
一直用Hibernate+mysql,感觉Hibernate很好用,也出过什么大问题:这周,公司的产品要部署到Orecle,虽然产品号称支持Oracle但是我自己知道,这个产品压根儿就没在Oracle上测试过,更不要是使用了.于是就开始紧罗密布的测试了,问题自然一大堆,现在说一个关于主键生成策略的问题. 首先,众所周知,Hibernate可以自动建表.当我们把项目部署好,运行的时候发现,确实自动建表了,但是少了很多表,就是有的表生成了,有的表木有生成,这就让人很头疼了.一波操作之后,发现Hibe…
http://blog.csdn.net/yerenyuan_pku/article/details/52740744 本文我们学习映射文件中的主键属性,废话不多说,直接开干. 我们首先在cn.itcast.d_hbm_id包下创建一个持久化类——User.java. public class User { private Integer id; // 如果是数字,建议使用包装类型. private String name; public Integer getId() { return id;…
一.Hibernate中常用的主键生成方式有如下几种: 1)identity: 用于自动生成主键方式,除了 Oracle 不支持,其他数据库一般都支持(较常用) 2)sequence: Oracle 中使用,用序列生成 ID 主键 3)native: 主键生成方式如果是 native,那就看配置文件 hibernate.cfg.xml 中方言<property name="dialect">是什么,如果方言是 Mysql,相当于 identity,如果方言是 Oracle,…
一.前言 在我们的日常开发中,有时候会用到数据库进行设计的时候,采用了复合主键来来保证唯一性,下面介绍一下采用hibernate的@EmbeddedId嵌入式主键. 二.说明 设计一个学生类,包含了三个字段 create tbale student( stu_no char(11) not null, stu_name varchar2(30) not null, stu_class varchar2(20) ) stu_no : 学号. stu_name : 姓名 . stu_class :…
在PowerDesinger中,若表名过长,自动生成的主键名会被自动截取. 解决如下:DataBase/Edit Current DBMS/Scripts/Objects/PKey/ConstName中找到Value的值,默认是 PK_%.U27:TABLE%,U27表示截取27个字符.改成PK_%TABLE%主键名就不会被截取了. 同理,对生成的约束名常常因为截断字符串而导致重名错误,可以放开. DataBase/Edit Current DBMS/Scripts/Objects/Refere…
一些类,在前面的博客中有,就不重复了 public class Test2 { TestDAO t=new TestDAO(); /*前提是数据表的主键是自动增加的, *取得数据库自动生成的主键 * */ @Test public void testGetKeyValues() throws Exception{ Connection connection=null; PreparedStatement preparedStatement=null; try { String sql="inse…
获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: /** * 获取数据库自动生成的主键 */ @Test public void testGetKeyValues(){ Connection connection=null; PreparedStatement preparedStatement=null; ResultSet rs=null; try { conne…
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: 1 package me.gacl.demo; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import me.gacl.utils.JdbcU…
转自:http://www.cnblogs.com/ysw-go/ 获取数据库自动生成的主键 我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: 1 /** 2 * 获取数据库自动生成的主键 3 */ 4 @Test 5 public void testGetKeyValues(){ 6 Connection connection=null; 7 PreparedStatement preparedStatement=nu…
一.基于主键的双向1对1 1.介绍: 基于主键的映射策略:指一端的主键生成器使用 foreign 策略,表明根据"对方"的主键来生成自己的主键,自己并不能独立生成主键. <param> 子元素指定使用当前持久化类的哪个属性作为 "对方" 采用foreign主键生成器策略的一端增加 one-to-one 元素映射关联属性,其one-to-one属性还应增加 constrained="true" 属性:另一端增加one-to-one元素映…
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: 1 package me.gacl.demo; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import me.gacl.utils.JdbcU…
一.sql语句 CREATE TABLE `testgeneratedkeys` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 二.测试代码 public class JdbcGeneratedKeys { @Test public void test() { Connection co…
public class testGetKeyValue { /** * 取得数据库自动生成的主键 */ @Test public void testGeneratedKeys() { Connection conn = null; PreparedStatement ps = null; ResultSet rs=null; try { conn = JDBCTools.getConnection(); String sql = "INSERT INTO customers(name,emai…
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: package me.tanlei.demo; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import…
为什么需要获取自动生成的主键 例如:…
hibernate主键生成策略主要指的是在实体类orm的配置 <id name=""> <generator class="native"></generator> </id> 主键生成策略:(7个) indentity :主键自增  ,从数据库中维护主键值,在录入时不用指定主键.   控制台sql 显示为: insert into  Person(name ,sex,age) values(?,?,?) increm…
User.java实体类 package com.tao.pojo; import javax.persistence.Column; //用注解的方式生成表 import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.T…
1)手工控制 assigned(不限制类型) 2)数据库自动生成 uuid(字符串类型) increment(整型数值类型) identity (整型数值类型) sequence (整型数值类型) native(整型数值类型) assigned策略是由程序员手工控制输入数据模型OID的一种id生成策略assigned策略不限定数据库中id字段的类型assigned策略无法保障id的不重复性assigned策略通常配合外部自定义的id生成策略使用,否则将具有很大的风险性assigned策略对于集群…
今天在做项目的时候,一个中间表没有主键,所有在创建实体的时候也未加组件,结果报以下错误: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateSessionFactory' defined in class path resource [spring-config/ac-cif-srv-config.xml]: Invocation of init met…
上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入discriminator-value鉴别器.该篇文章来讨论复合主键映射,它是指主键是多列的组合,如今在设计数据库时非常少用到复合主键,由于考虑到数据库的优化,经常会把复合主键拆分到两个表中,并利用一个关系表来维护两个表的关系,关系表中不加入主键. 一.复合主键映射 复合主键映射须要在映射配置文件里使用<…
MYSQL 中表1需要准备大量数据,内容主要取自表2,id必须为32位uuid (项目所有表都是这样,没办法), 准备这样插入: INSERT INTO TBL_ONE (ID, SOID, SNAME) SELECT REPLACE (UUID(), '-', ''), TWO.ID, TWO.NAME FROM TBL_TWO TWO 报错: Duplicate entry '4534c15dc2a111e6a9ab000ec6c596eb' for key 'PRIMARY',显然主键冲突…
1.1.1.  activiti默认主键生成方式 ; 下面我们看一下主键的生成策略:主键的生成策略定义在IdGenerator接口中,接口定义如下所示: public interface IdGenerator {  String getNextId();} getNextId()方法定义了主键生成的策略,每次需要主键的时候直接从getNextId()方法中获取即可. 下面看一下IdGenerator接口的实现类,具体的实现结构如下: 1.DbIdGenerator默认的方式,没有依赖第三方ja…
最近学习Spring boot JPA 学习过程解决的一些问题写成随笔,大家一起成长.这次遇到自定义主键的问题 package javax.persistence; public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO; private GenerationType() { } } GenerationType源码 从源码中可以看出JPA提供的四种标准主键策略TABLE,SEQUENCE,IDENTITY,AUTO TABLE:…