云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 尚学堂马士兵hibernate笔记(讲义)

尚学堂马士兵hibernate笔记(讲义)

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 12:34:37

Hibernate映射类型 Hibernate 映射类型 integer 或者 int long short byte float double big_decimal character string boolean yes_no true_false 映射类型 date time timestamp calendar calendar_date 映射类型 binary text serializable clob blob 骤:

1 在一个数据库事务中先保存一个空的 Blob 或 Clob 实例。 2

Java 类型 long Long short Short byte Byte float Float double Double java.math.BigDecimal char Character String String boolean Boolean boolean Boolean boolean Boolean 标准 SQL 类型 BIGINT SMALLINT TINYINT FLOAT DOUBLE NUMERIC CHAR(1) VARCHAR BIT CHAR(1) (Y-N) CHAR(1) (T-F) 标准 SQL 类型 TIME TIMESTAMP TIMESTAMP DATE 大小和取值范围 4 字节 8 字节 2 字节 1 字节 4 字节 8 字节 NUMERIC(8,2)8 位 定长字符 变长字符串 布尔类型 布尔类型 布尔类型 描述 YYYY-MM-DD HH:MM:SS YYYYMMDDHHMMSS YYYYMMDDHHMMSS YYYY-MM-DD Oracle 类型 BLOB CLOB BLOB CLOB BLOB int 或者 java.lang.Integer INTEGER 2 、 Java 时间和日期类型的 Hibernate 映射 Java 类型 Date Time Date Timestamp calendar calendar Java 类型 byte[] String Serializable 接口任意实现类 java.sql.Clob java.sql.Blob util.Date 或者 sql.Date DATE 3 、 Java 大对象类型的 Hibernate 映射类型 标准 SQL 类型 MySQL 类型 VARBINARY( 或 BLOB BLOB) CLOB BLOB) CLOB BLOB TEXT BLOB TEXT VARBINARY( 或 BLOB 在程序中通过 Hibernate 来保存 java.sql.Clob 或者 java.sql.Blob 实例时,必须包含两个步

接着锁定这条记录,更新上面保存的 Blob 或 Clob 实例,把二进制数据或文本数据写到 Blob 或 Clob 实例中

Hibernate SQL方言 (hibernate.dialect) RDBMS DB2 DB2 AS/400 DB2 OS390 方言 org.hibernate.dialect.DB2Dialect org.hibernate.dialect.DB2400Dialect org.hibernate.dialect.DB2390Dialect RDBMS PostgreSQL MySQL 方言 org.hibernate.dialect.PostgreSQLDialect org.hibernate.dialect.MySQLDialect MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect Oracle (any version) Oracle 9i/10g Sybase Sybase Anywhere org.hibernate.dialect.OracleDialect org.hibernate.dialect.Oracle9Dialect org.hibernate.dialect.SybaseDialect org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate.dialect.SQLServerDialect SAP DB Informix HypersonicSQL Ingres Progress Mckoi SQL Interbase Pointbase FrontBase Firebird

org.hibernate.dialect.SAPDBDialect org.hibernate.dialect.InformixDialect org.hibernate.dialect.HSQLDialect org.hibernate.dialect.IngresDialect org.hibernate.dialect.ProgressDialect org.hibernate.dialect.MckoiDialect org.hibernate.dialect.InterbaseDialect org.hibernate.dialect.PointbaseDialect org.hibernate.dialect.FrontbaseDialect org.hibernate.dialect.FirebirdDialect ID生成策略

1.XML方式配置

可选的子元素是一个Java类的名字, 用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数, 用元素来传递。

所有的生成器都实现org.hibernate.id.IdentifierGenerator接口。 这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然, Hibernate提供了很多内置的实现。下面是一些内置生成器的快捷名字: ? ?

increment 用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

identity 对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支

持。 返回的标识符是long, short 或者int类型的。 ? ?

sequence 在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。

hilo 使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是 hibernate_unique_key 和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。 ? ? ? ? ? ? ? ?

seqhilo 使用一个高/低位算法来高效的生成long, short 或者 int类型的标识符,给定一个数据库序列(sequence)的名字。

uuid 用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。 guid 在MS SQL Server 和 MySQL 中使用数据库生成的GUID字符串。

native 根据底层数据库的能力选择identity, sequence 或者hilo中的一个。在mysql中默认的是auto_increment,SQLSERVER中是identity.

assigned 让应用程序在save()之前为对象分配一个标示符。这是 元素没有指定时的默认生成策略。

select 通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。 foreign 使用另外一个相关联的对象的标识符。通常和联合起来使用。 sequence-identity 一种特别的序列生成策略,使用数据库序列来生成实际值,但将它和JDBC3的getGeneratedKeys结合在一起,使得在插入语句执行的时候就返回生成的值。目前为止只有面向JDK 1.4的Oracle 10g驱动支持这一策略。注意,因为Oracle驱动程序的一个bug,这些插入语句的注释被关闭了。(原文:Note comments on these insert statements are disabled due to a bug in the Oracle drivers.) 2 annotation中配置id生成策略

使用@Id注解可以将实体bean中的某个属性定义为标识符(identifier). 该属性的值可以通过应用自身进行设置, 也可以通过Hiberante生成(推荐).

使用 @GeneratedValue注解可以定义该标识符的生成策略: 有四种策略 ? ? ? ?

AUTO -默认值.可以是identity column类型,或者sequence类型或者table类型,取决于不同的底层数据库..对于MYSQL,是auto_increment,对于Oracle是hibernate-sequence. TABLE - 使用表保存id值 (了解) IDENTITY - identity column

SEQUENCE - @SequenceGenerator

@GeneratedValue(strategy=GenerationType.XXXX)

XXXX取值为Type.SEQUENCE|TABLE|AUTO|IDENTITY不同的数据库对应着不同的生成策略. 例1 实体类注解 @Entity 主键进行注解 @Id

@GeneratedValue

默认值是@GeneratedValue(strategy=GenerationType.AUTO) 例2

使用SequenceGenerator @Entity

@SequenceGenerator(

name=\,sequenceName=\)

name是用户自定义的generator生成器的名字, sequenceName是生成到数据库后sequence对象的名字.

在实体中注解好后,就可以在id注解上写上对应的 @Id

@GeneratedValue(

strategy=GenerationType.IDENTITY,generator=\) 例3

表生成器(了解),这种方式会另外生成一个表. 实体类注解 @Entity

@javax.persistence.TableGenerator(//了解,更适合用于跨平台跨数据库.

name=\, //生成器generator的名字 table=\,//生成的表名 pkColumnName = \,//生成的表的字段名

valueColumnName = \,//生成的表的字段的值 pkColumnValue=\,// pk_key字段的值 allocationSize=1//自增变量 )

主键注解

@Id

@GeneratedValue(strategy=GenerationType.TABLE,generator=\)

? 联合主键生成策略

一般采用这种方式,比如有一个类Student(id,name,age),为了产生联合主键,把id和name分离出来. Student(pk,age) StudentPk(id,name)

StudentPk类必需实现序列化接口implements java.io.Serializable. StudentPk类必需重写boolean equals() ,int hasCode()方法 @Override

public boolean equals(Object o) { }

@Override

public int hashCode() {

if(o instanceof StudentPk) { }

return false;

StudentPk pk = (StudentPk)o;

if(this.id == pk.getId() && this.name.equals(pk.getName())) { }

return true;

搜索更多关于: 尚学堂马士兵hibernate笔记(讲义) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Hibernate映射类型 Hibernate 映射类型 integer 或者 int long short byte float double big_decimal character string boolean yes_no true_false 映射类型 date time timestamp calendar calendar_date 映射类型 binary text serializable clob blob 骤: 1 在一个数据库事务中先保存一个空的 Blob 或 Clob 实例。 2 Java 类型 long Long short Short byte Byte float Float double Double

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com