SS6.2_Hibernate_Hibernate_IdStrategyAnnotation 主键生成策略uuid Annotation注解的配置方式
2017-02-09 11:35
846 查看
字符串字段sid主键的生成策略使用的是uuid,全球唯一编码主键可以在分布式系统中使用;
我们接下来要创建的项目结构:
创建学生实体:
package net.nw.vo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.annotations.GenericGenerator;
@Entity //@Entity表示Student这个类在数据库当中将被映射为一张表,表名称就叫做Student
public class Student {
private String sid;
private String sname;
//@Id表示属性对应的私有属性sid是数据库表中的主键
//@GeneratedValue表示主键的生成方式;generator="stu_id"表示使用自定义生成器的名称
//@GenericGenerator表示自定义一个hibernate主键生成器;name="stu_id"表示自定义生成器的名称;strategy="uuid"指定生成策略生成主键
@Id
@GeneratedValue(generator="stu_id")
@GenericGenerator(name="stu_id",strategy="uuid")
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
创建数据库连接配置文件和注册对象 - 关系实体类映射文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/testdb</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="current_session_context_class">thread</property>
<mapping class="net.nw.vo.Student"
/>
</session-factory>
</hibernate-configuration>
创建日志配置文件log4j.properties:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
创建单元测试文件:
package net.nw.vo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import junit.framework.TestCase;
public class TestStudent extends TestCase {
private static SessionFactory sessionFactory ;
@Override
protected void setUp() throws Exception {
System.out.println("setUp()...");
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
@Override
protected void tearDown() throws Exception {
System.out.println("tearDown()...");
sessionFactory.close();
}
public void testSave(){
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
try{
Student s = new Student();
s.setSname("zhangsan"); // 主键没赋值显然希望主键自动生成
session.save(s);
tx.commit();
}catch(Exception ex){
tx.rollback();
ex.printStackTrace();
}
}
}
导入单元测试jar包:
项目上右键单击 ------》Build Path ------》Configure Build Path ... ------》Add Library ... ------》JUnit ------》JUnit library version: JUnit 4 ------》OK
导入mysql-connector-java-5.1.40-bin.jar的jar包:
项目上右键单击 ------》Build Path ------》Configure Build Path ... ------》Add External JARS ... ------》/root/mysql-connector-java-5.1.40-bin/mysql-connector-java-5.1.40-bin.jar ------》OK
运行单元测试方法testSave(),注意控制台输出的创建student表结构的SQL脚本:
运行单元测试之前必需手动地把testdb数据库中的学生表删掉:drop table student;
用鼠标一直展开到TestStudent单元测试类内部的所有方法这一层 ------》右键单击testSave() void ------》Run As ------》Junit Test
添加第1条记录zhangsan时,控制台会输出如下信息:
Student s = new Student();
s.setSname("zhangsan"); // 主键没赋值显然希望主键自动生成
session.save(s);
tx.commit();
setUp()...
11:23:33,042 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
11:23:33,044 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
11:23:33,227 INFO SchemaUpdate:155 - Running hbm2ddl schema update
11:23:33,227 INFO SchemaUpdate:167 - fetching database metadata
11:23:33,229 INFO SchemaUpdate:179 - updating schema
11:23:33,233 INFO DatabaseMetadata:119 - table not found: Student
11:23:33,234 INFO DatabaseMetadata:119 - table not found: Student
11:23:33,234 DEBUG SchemaUpdate:203 -
create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
11:23:33,240 INFO SchemaUpdate:217 - schema update complete
11:23:33,293 DEBUG JDBCTransaction:82 - begin
11:23:33,293 DEBUG JDBCTransaction:87 - current autocommit status: false
11:23:33,299 DEBUG JDBCTransaction:134 - commit
11:23:33,303 DEBUG SQL:111 - insert into Student (sname, sid) values (?, ?)
Hibernate: insert into Student (sname, sid) values (?, ?)
11:23:33,326 DEBUG JDBCTransaction:147 - committed JDBC Connection
tearDown()...
添加第2条记录lisi时,控制台会输出如下信息:
Student s = new Student();
s.setSname("lisi"); // 主键没赋值显然希望主键自动生成
session.save(s);
tx.commit();
setUp()...
11:28:56,652 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
11:28:56,654 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
11:28:56,808 INFO SchemaUpdate:155 - Running hbm2ddl schema update
11:28:56,808 INFO SchemaUpdate:167 - fetching database metadata
11:28:56,809 INFO SchemaUpdate:179 - updating schema
11:28:56,824 INFO TableMetadata:65 - table found: testdb.student
11:28:56,824 INFO TableMetadata:66 - columns: [sid, sname]
11:28:56,825 INFO TableMetadata:68 - foreign keys: []
11:28:56,825 INFO TableMetadata:69 - indexes: [primary]
11:28:56,825 INFO SchemaUpdate:217 - schema update complete
11:28:56,879 DEBUG JDBCTransaction:82 - begin
11:28:56,879 DEBUG JDBCTransaction:87 - current autocommit status: false
11:28:56,886 DEBUG JDBCTransaction:134 - commit
11:28:56,903 DEBUG SQL:111 - insert into Student (sname, sid) values (?, ?)
Hibernate: insert into Student (sname, sid) values (?, ?)
11:28:56,916 DEBUG JDBCTransaction:147 - committed JDBC Connection
tearDown()...
MySQL-connector-Java-5.1.40.zip包:http://download.csdn.NET/detail/zhengzizhi/9747510
SS6.2_Hibernate_Hibernate_IdStrategyAnnotation.zip源码下载地址:http://download.csdn.net/detail/zhengzizhi/9750737
添加单元测试方法 testSchemaExpert(),该方法自动创建数据库表
package net.nw.vo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import junit.framework.TestCase;
public class TestStudent extends TestCase {
private static SessionFactory sessionFactory ;
@Override
protected void setUp() throws Exception {
System.out.println("setUp()...");
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
@Override
protected void tearDown() throws Exception {
System.out.println("tearDown()...");
sessionFactory.close();
}
public void testSave(){
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
try{
Student s = new Student();
s.setSname("lisi");
session.save(s);
tx.commit();
}catch(Exception ex){
tx.rollback();
ex.printStackTrace();
}
}
public void testSchemaExpert(){
SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());
se.create(true,true);
}
}
只运行单元测试方法testSchemaExpert()控制台输出如下信息,注意输出的红色字体标识的SQL语句
setUp()...
13:20:02,325 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
13:20:02,327 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
13:20:02,555 INFO SchemaUpdate:155 - Running hbm2ddl schema update
13:20:02,555 INFO SchemaUpdate:167 - fetching database metadata
13:20:02,556 INFO SchemaUpdate:179 - updating schema
13:20:02,559 INFO DatabaseMetadata:119 - table not found: Student
13:20:02,560 INFO DatabaseMetadata:119 - table not found: Student
13:20:02,560 DEBUG SchemaUpdate:203 - create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
13:20:02,568 INFO SchemaUpdate:217 - schema update complete
13:20:02,580 INFO SchemaExport:226 - Running hbm2ddl schema export
13:20:02,581 DEBUG SchemaExport:242 - import file not found: /import.sql
13:20:02,581 INFO SchemaExport:251 - exporting generated schema to database
drop table if exists Student
13:20:02,586 DEBUG SchemaExport:377 - drop table if exists Student
create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
13:20:02,596 DEBUG SchemaExport:377 - create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
13:20:02,603 INFO SchemaExport:268 - schema export complete
tearDown()...
我们接下来要创建的项目结构:
创建学生实体:
package net.nw.vo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.annotations.GenericGenerator;
@Entity //@Entity表示Student这个类在数据库当中将被映射为一张表,表名称就叫做Student
public class Student {
private String sid;
private String sname;
//@Id表示属性对应的私有属性sid是数据库表中的主键
//@GeneratedValue表示主键的生成方式;generator="stu_id"表示使用自定义生成器的名称
//@GenericGenerator表示自定义一个hibernate主键生成器;name="stu_id"表示自定义生成器的名称;strategy="uuid"指定生成策略生成主键
@Id
@GeneratedValue(generator="stu_id")
@GenericGenerator(name="stu_id",strategy="uuid")
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
创建数据库连接配置文件和注册对象 - 关系实体类映射文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/testdb</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="current_session_context_class">thread</property>
<mapping class="net.nw.vo.Student"
/>
</session-factory>
</hibernate-configuration>
创建日志配置文件log4j.properties:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
创建单元测试文件:
package net.nw.vo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import junit.framework.TestCase;
public class TestStudent extends TestCase {
private static SessionFactory sessionFactory ;
@Override
protected void setUp() throws Exception {
System.out.println("setUp()...");
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
@Override
protected void tearDown() throws Exception {
System.out.println("tearDown()...");
sessionFactory.close();
}
public void testSave(){
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
try{
Student s = new Student();
s.setSname("zhangsan"); // 主键没赋值显然希望主键自动生成
session.save(s);
tx.commit();
}catch(Exception ex){
tx.rollback();
ex.printStackTrace();
}
}
}
导入单元测试jar包:
项目上右键单击 ------》Build Path ------》Configure Build Path ... ------》Add Library ... ------》JUnit ------》JUnit library version: JUnit 4 ------》OK
导入mysql-connector-java-5.1.40-bin.jar的jar包:
项目上右键单击 ------》Build Path ------》Configure Build Path ... ------》Add External JARS ... ------》/root/mysql-connector-java-5.1.40-bin/mysql-connector-java-5.1.40-bin.jar ------》OK
运行单元测试方法testSave(),注意控制台输出的创建student表结构的SQL脚本:
运行单元测试之前必需手动地把testdb数据库中的学生表删掉:drop table student;
用鼠标一直展开到TestStudent单元测试类内部的所有方法这一层 ------》右键单击testSave() void ------》Run As ------》Junit Test
添加第1条记录zhangsan时,控制台会输出如下信息:
Student s = new Student();
s.setSname("zhangsan"); // 主键没赋值显然希望主键自动生成
session.save(s);
tx.commit();
setUp()...
11:23:33,042 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
11:23:33,044 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
11:23:33,227 INFO SchemaUpdate:155 - Running hbm2ddl schema update
11:23:33,227 INFO SchemaUpdate:167 - fetching database metadata
11:23:33,229 INFO SchemaUpdate:179 - updating schema
11:23:33,233 INFO DatabaseMetadata:119 - table not found: Student
11:23:33,234 INFO DatabaseMetadata:119 - table not found: Student
11:23:33,234 DEBUG SchemaUpdate:203 -
create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
11:23:33,240 INFO SchemaUpdate:217 - schema update complete
11:23:33,293 DEBUG JDBCTransaction:82 - begin
11:23:33,293 DEBUG JDBCTransaction:87 - current autocommit status: false
11:23:33,299 DEBUG JDBCTransaction:134 - commit
11:23:33,303 DEBUG SQL:111 - insert into Student (sname, sid) values (?, ?)
Hibernate: insert into Student (sname, sid) values (?, ?)
11:23:33,326 DEBUG JDBCTransaction:147 - committed JDBC Connection
tearDown()...
添加第2条记录lisi时,控制台会输出如下信息:
Student s = new Student();
s.setSname("lisi"); // 主键没赋值显然希望主键自动生成
session.save(s);
tx.commit();
setUp()...
11:28:56,652 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
11:28:56,654 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
11:28:56,808 INFO SchemaUpdate:155 - Running hbm2ddl schema update
11:28:56,808 INFO SchemaUpdate:167 - fetching database metadata
11:28:56,809 INFO SchemaUpdate:179 - updating schema
11:28:56,824 INFO TableMetadata:65 - table found: testdb.student
11:28:56,824 INFO TableMetadata:66 - columns: [sid, sname]
11:28:56,825 INFO TableMetadata:68 - foreign keys: []
11:28:56,825 INFO TableMetadata:69 - indexes: [primary]
11:28:56,825 INFO SchemaUpdate:217 - schema update complete
11:28:56,879 DEBUG JDBCTransaction:82 - begin
11:28:56,879 DEBUG JDBCTransaction:87 - current autocommit status: false
11:28:56,886 DEBUG JDBCTransaction:134 - commit
11:28:56,903 DEBUG SQL:111 - insert into Student (sname, sid) values (?, ?)
Hibernate: insert into Student (sname, sid) values (?, ?)
11:28:56,916 DEBUG JDBCTransaction:147 - committed JDBC Connection
tearDown()...
MySQL-connector-Java-5.1.40.zip包:http://download.csdn.NET/detail/zhengzizhi/9747510
SS6.2_Hibernate_Hibernate_IdStrategyAnnotation.zip源码下载地址:http://download.csdn.net/detail/zhengzizhi/9750737
添加单元测试方法 testSchemaExpert(),该方法自动创建数据库表
package net.nw.vo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import junit.framework.TestCase;
public class TestStudent extends TestCase {
private static SessionFactory sessionFactory ;
@Override
protected void setUp() throws Exception {
System.out.println("setUp()...");
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
@Override
protected void tearDown() throws Exception {
System.out.println("tearDown()...");
sessionFactory.close();
}
public void testSave(){
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
try{
Student s = new Student();
s.setSname("lisi");
session.save(s);
tx.commit();
}catch(Exception ex){
tx.rollback();
ex.printStackTrace();
}
}
public void testSchemaExpert(){
SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());
se.create(true,true);
}
}
只运行单元测试方法testSchemaExpert()控制台输出如下信息,注意输出的红色字体标识的SQL语句
setUp()...
13:20:02,325 INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
13:20:02,327 INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
13:20:02,555 INFO SchemaUpdate:155 - Running hbm2ddl schema update
13:20:02,555 INFO SchemaUpdate:167 - fetching database metadata
13:20:02,556 INFO SchemaUpdate:179 - updating schema
13:20:02,559 INFO DatabaseMetadata:119 - table not found: Student
13:20:02,560 INFO DatabaseMetadata:119 - table not found: Student
13:20:02,560 DEBUG SchemaUpdate:203 - create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
13:20:02,568 INFO SchemaUpdate:217 - schema update complete
13:20:02,580 INFO SchemaExport:226 - Running hbm2ddl schema export
13:20:02,581 DEBUG SchemaExport:242 - import file not found: /import.sql
13:20:02,581 INFO SchemaExport:251 - exporting generated schema to database
drop table if exists Student
13:20:02,586 DEBUG SchemaExport:377 - drop table if exists Student
create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
13:20:02,596 DEBUG SchemaExport:377 - create table Student (sid varchar(255) not null, sname varchar(255), primary key (sid))
13:20:02,603 INFO SchemaExport:268 - schema export complete
tearDown()...
相关文章推荐
- SS6.1_Hibernate_Hibernate_IdStrategyAnnotation 主键生成策略native Annotation注解的配置方式
- Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- 【Hibernate框架开发之四】Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- 【Hibernate框架开发之四】Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- 【Hibernate框架开发之四】Annotation注解归总&ID生成策略&联合主键
- hibernate的ID生成策略(annotation方式@GeneratedValue)
- hibernate配置主键生成策略,mysql uuid
- Hibernate Annotation配置主键生成策略
- SS5.1_Hibernate_IdStrategyXML ~ SS5.5_Hibernate_IdStrategyXML 主键生成策略 XML映射文件的方式
- hibernate annotation生成uuid主键(id为string类型的)
- 【hibernate框架】用Annotation注解表示id生成策略
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 1.10 ID生成策略(联合主键annotation方式)
- hibernate的ID生成策略(annotation方式@GeneratedValue)
- hibernate annotation 主键生成策略的相关配置
- Hibernate学习_004_Hibernate中常用的主键生成策略总结(下)Annotation方式
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence .