`
gaozhonghui
  • 浏览: 242032 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古自治区
社区版块
存档分类
最新评论

Hibernate的映射类型 hibernate mysql映射类型[转]

阅读更多

1、Hibernate的映射类型 hibernate mysql映射类型

Hibernate 映射类型 Java 类型 标准 SQL 类型 大小和取值范围
integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节
long long  Long BIGINT 8 字节
short short  Short SMALLINT 2 字节
byte byte  Byte TINYINT 1 字节
float float  Float FLOAT 4 字节
double double  Double DOUBLE 8 字节
big_decimal java.math.BigDecimal NUMERIC NUMERIC(8,2)8 位
character char  Character  String CHAR(1) 定长字符
string String VARCHAR 变长字符串
boolean boolean  Boolean BIT 布尔类型
yes_no boolean  Boolean CHAR(1) (Y-N) 布尔类型
true_false boolean  Boolean CHAR(1) (T-F) 布尔类型

2 、 Java 时间和日期类型的 Hibernate 映射

映射类型 Java 类型 标准 SQL 类型 描述
date util.Date 或者 sql.Date DATE YYYY-MM-DD
time Date    Time TIME HH:MM:SS
timestamp Date   Timestamp TIMESTAMP YYYYMMDDHHMMSS
calendar calendar TIMESTAMP YYYYMMDDHHMMSS
calendar_date calendar DATE YYYY-MM-DD

3 、 Java 大对象类型的 Hibernate 映射类型

映射类型 Java 类型 标准 SQL 类型 MySQL 类型 Oracle 类型
binary byte[] VARBINARY( 或 BLOB) BLOB BLOB
text String CLOB TEXT CLOB
serializable Serializable 接口任意实现类 VARBINARY( 或 BLOB) BLOB BLOB
clob java.sql.Clob CLOB TEXT CLOB
blob java.sql.Blob BLOB BLOB BLOB

在程序中通过 Hibernate 来保存 java.sql.Clob 或者 java.sql.Blob 实例时,必须包含两个步骤:

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

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

 

介绍MYSQL的数据类型了,毕竟为你想要的数据选定一个合适的类型,对于数据库的存取效率有很大的改进。
MYSQL数据库有以下几种类型:整数型(int,binint,smallint,tinyint等等xxxint型)、浮点型(float,double,real等)、定点数型(decimal,也就是传说中的浮点型的字符串表达形式)、日期与时间型(data,time,datetime,timestamp),字符串型(char,varchar,text,tinytext,mediumtext,longtext等),二进制型(tinyblob,tinyblob,blob等blob型),枚举型(enum,set——set是类似于enum型)。

下面从整数型开始详细介绍这些数型的基本信息:
整数型
默认情况下,INT类型既包括正数,也包括负数,如果给INT列定义UNSIGNED属性,那么它的取值范围就永远是正数。这个永远是正数,非常重要,即,如果你在对数据列操作:update tablename set int_field = (int_field - 1000 ),如果int_field的值小于1000,理论上是变成了负数,但由于你设的属性是UNSIGNED,那么存储的数据仍然是无符号的正数,这可能会给你带来虚假或让人困惑的结果。
TINYINT的取值范围是从-128~+127,如果使用了UNSIGNED属性,那么它的取值范围就变成了0~+255。如果用户试图存入超过字段取值范围的数字,MYSQL所做的工作就非常简单,它会直接替换成最大可取值或最小可取值。
或许有人注意到,我们在使用phpmyadmin的时候,如果选择INT类型,那么后面有一个可选长度。不过,千万不要被这个数值所迷惑,因为它的实际功能并非指定该INT类型的长度,而是最大显示宽度(M:Maximum Display Width),仅仅用于查询数据时可以把查询结果按照你所指定的宽度进行显示,最主要的用途是为了排版需要。虽说是这样,但在一些很少见的特定场合(MYSQL在执行一些需要借助于临时数据表才能完成的复杂查询)里,临时数据表的数值有可能会被截短并导致最终结果不正确。因此,除非你与数据库所有的操作都在命令行下执行,否则,还是建议留空。

INT 类型 该类型的实际含义
 Tinyint(m) 8位整数,占用1个字节(-128~+127)
 smallint(m) 16位整数,占用2个字节(-32768~+32767)
 medimumint(m) 24位整数,占用3个字节(-8388608~+8388607)
 int(m),integer(m) 32位整数,占用4个字节(-2147483648~+2147483647)
 bigint(m) 64位整数,占用8个字节(-9.22E+18 ~ +9.22E+18)
 serial 这其实是bigint auto_increment not null primary key的简写

上面tinyint(m)括号中的m,就是上文所指的最大显示宽度。最后一个serial含义里的auto_increment,代表了该字段是自增字段,即,往有该属性的字段里插数据时,系统会自动把该字段的当前最大值加上1后存进去。 一般而言,该属性往往用于主键字段。在使用该属性时应当注意以下几个问题。
1、该属性必须与NOT NULL、primary Key 或者 Unique属性同时使用。
2、每个数据表只能存有一个auto_increment属性的数据列
3、该属性一般是在进行数据插入时,没有明确指定值或者指定值为NULL时,才起作用。如果指定了值,并且该值还没有出现过,MYSQL将使用该值插入,以生成一条新记录。这时候就有两种情况:a)原有的数据是1~100,后来删除了20~80的内容,即数据库里只存在1~19,81~100的数据,当插入ID为20的数据时,数据库还是会按照规则,把20这条记录插进去,并不会报错,自增值仍然是100,下次正常插入时,还是会默认使用101这个值。b)原有的数据是1~100,我插入ID为1000的数据时,不会报错,但自增值变为1000,下次插入数据从1001起算。(啰嗦了点,但应该记住)
4、如果想知道刚刚插入的数据值是多少,在插入数据后,可以使用select last_insert_id()语句获取。在PHP中,有一个函数是:mysql_insert_id(),该函数不是很建议使用,因为它返回的数据是INT型,如果auto_increment所在的数据列类型是bigint,而且实际值已经超过int类型最大值的话,mysql_insert_id()返回的值,将不正确。
5、如果auto_increment计数器达到了最大值(即该字段所允许的最大值),将不再递增,因此数据插入将无法执行。其实是到了最大值后,MYSQL会永远将该字段的最大值往数据库里插,因此造成MYSQL报:该数据列已存在的错误。
6、如果在可行范围内,或者预计数量会很大的情况下,尽量使用你想要设定的数据类型的再上一层类型,但尽量不要太夸张。比如你预计你的用户数不会超过1000000万,表面上medimum无符号已经够用了,但这时候,仍然建议你使用int型,以防万一。

还有个BIT和BOOL,在MYSQL中,关键词BOOL是TINYINT的同义词,在5.0.2以及以前的版本中,BIT也是如此。但是从5.0.3开始,BIT不再是TINYINT的同义词,而是一种可以存储多达64位二进制数值的新数据类型。这个在以后会单独介绍,这里一笔带过先。

分享到:
评论

相关推荐

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    hibernate映射类型.doc

    以下是一些常见的Hibernate映射类型及其对应的Java和SQL类型: 1. `Integer` 或 `java.lang.Integer`: 映射到标准SQL类型的 `Integer` (Oracle的 `number`)。 2. `Long` 或 `java.lang.Long`: 映射到 `BigInt` ...

    Hibernate映射配置实例大全(详细总结)

    "Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...

    用MyEclipse自动生成hibernate映射文件和实体类

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    hibernate和MySQL的jar

    标题中的“hibernate和MySQL的jar”指的是Hibernate ORM框架与MySQL数据库之间的连接库。Hibernate是一种流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来操作数据库,而无需直接编写SQL...

    Hibernate映射文件主键的生成

    本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和使用。 首先,主键(Primary Key)是数据库表中用于唯一标识一条记录的字段,其值在表中必须是唯一的,并且通常不...

    hibernate映射篇

    在Hibernate中,我们使用`<set>`标签来表示集合类型的关联,通过`<key>`标签指定外键列(如`<key column="classesid" />`),并使用`<one-to-many>`标签指定关联的实体类(如`<one-to-many class="com.bdqn....

    hibernate实体映射文件字段设置默认值

    首先,我们需要了解一个基本的Hibernate映射文件结构: ```xml <hibernate-mapping> <!-- 映射类的属性 --> </hibernate-mapping> ``` 这里的`<class>`标签表示映射到特定的Java类,其属性`name`指定了对应的...

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    这里,我们提到了一个名为“Hibernate的映射类型_hibernate_mysql映射类型.doc”的文档,这很可能是一个详细的对照表,列出了Hibernate如何将Java数据类型映射到MySQL数据库的SQL数据类型。MySQL是世界上最流行的...

    Hibernate关系映射XML生成工具

    用户只需要指定数据库连接信息,Middlegen就能够解析数据库中的表结构,并生成对应的Hibernate映射文件。对于MySQL数据库,Middlegen通常会处理诸如表名、字段、主键、外键等信息,将其转换为符合Hibernate规范的XML...

    Hibernate映射配置详解

    在Java世界中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者将数据库操作转换为对Java对象的操作,极大地简化了数据库编程。SSH是Spring、Struts和Hibernate三个开源框架的简称,常被用于构建...

    Hibernate映射工具,能获得xml,java

    这个压缩包中的"Hibernate映射工具"可能是为了帮助开发者更方便地管理和处理这些映射关系。 XML在Hibernate中扮演着关键角色,它是定义对象-关系映射(ORM)的主要方式。XML文件,通常以`.hbm.xml`为扩展名,包含...

    MyEclipse自动生成hibernate映射文件

    ### MyEclipse自动生成Hibernate映射文件 #### 一、概述 在开发基于Java的Web应用时,ORM(对象关系映射)框架如Hibernate能够极大地提高数据持久化的效率及便捷性。MyEclipse是一款功能强大的集成开发环境,支持...

    sqlserver以及mysql hibernate xml映射语句

    - **`mapping`**:指定Hibernate映射文件的位置,例如`<mapping resource="com/hibernate/User.hbm.xml"/>`。 #### 三、Hibernate XML映射文件详解 ##### 3.1 映射文件结构 Hibernate的XML映射文件定义了Java对象...

    spring3.0+hibernate3.3+mysql8.0

    3. **实体类和映射文件**:创建Java实体类来表示数据库中的表,并编写对应的Hibernate映射文件(XML或注解形式),描述对象与表之间的映射关系。 4. **事务管理**:在Spring中配置事务管理器,如`...

    hibernate映射主键生成策略native

    ### Hibernate映射主键生成策略native #### 一、引言 在ORM(对象关系映射)技术中,Hibernate作为一款流行的Java持久层框架,在处理数据持久化方面提供了丰富的功能和灵活性。其中,主键生成策略是Hibernate配置...

    Hibernate映射工具

    1- 通过PowerDesigner进行数据建模,设计好表,别写好表备注,字段备注。 2- 通过PowerDesigner生成数据库。 3- 通过该工具从数据库生成 hbm.xml 配置文件 和 ...5- 目前仅仅支持 MSSQL2000数据库 和 MYSQL 数据库

    Hibernate中数据类型

    总的来说,理解 Hibernate 中的数据类型映射是进行数据库操作的关键,它有助于确保数据在 Java 应用程序和数据库之间的准确传输,并确保程序的稳定性和兼容性。正确选择和配置这些类型可以避免许多潜在的问题,如...

    IntelliJ IDEA下自动生成Hibernate映射文件以及实体类

    IntelliJ IDEA下自动生成Hibernate映射文件以及实体类 IntelliJ IDEA是一款功能强大的集成开发环境(IDE),它提供了许多实用的功能来提高开发效率。其中一个非常有价值的功能是自动生成Hibernate映射文件和实体类...

Global site tag (gtag.js) - Google Analytics