Hibernate(2)——单表操作

一、 单一主键策略

  • assigned:表示由java程序来指定id或者手工赋值
  • native:由底层数据库自动生成标识符。如果是MySQL就是auto_increment,如果是Oracle就是sequence。

二、 数据基本类型

Hibernate映射类型 Java类型 标准SQL类型 大小
integer/int java.lang.Integer/int INTEGER 4字节
long java.lang.Long BIGINT 8字节
short java.lang.Short SAMLLINT 2字节
byte java.lang.Byte/byte TINYINT 1字节
float java.lang.Float/float FLOAT 4字节
double java.lang.Double/double DOUBLE 8字节
big_decimal java.math.BigDecimal NUMERIC
character java.lang.Character/java.lang.String/char CHAR(1) 定长字符
string java.lang.String varchar 变长字符
boolean/yes_no/true_false java.lang.Boolean/boolean BIT 布尔类型
date java.util.Date/java.sql.Date DATE 日期
timestamp java.util.Date/java.sql.Timestamp TIMESTAMP 日期
calendar java.util.Calendar TIMESTAMP 日期
calendar_date java.util.Calendar DATE 日期

上述表格中,日期、时间的类型较容易混淆,需要注意,Hibernate类型的date表示日期(对应java类型中的Date),time则表示时分秒,timestamp是时间戳(包含日期以及时分秒),calendar与timestamp相同,calendar_date代表日期年月日。

三、 对象类型

Hibernate映射类型 Java类型 标准SQL类型 MySQL类型 Oracle类型
binary byte[] VARCHAR(BLOB) BLOB BLOB
text java.lang.Stirng CLOB TEXT CLOB
clob java.sql.Clob CLOB TEXT CLOB
blob java.sql.Blob BLOB BLOB BLOB

在MySQL中不支持标准SQL的CLOB类型,在MySQL中,用TEXT/MEDIUMTEXT/LONGTEXT来表示长度超过255的长文本数据。

四、 组件属性

实体类的某个属性属于用户自定义类的对象,这就叫做组件属性。


    
    
    

例如,如果某个实体类对象有一个address属性,那么它就是一个组件属性。在对象关系映射文件(*.hbm.xml)中,上述component标签和property是同一级的。

五、 单表CRUD方法

使用session的save()、update()、delete()、查询单个结果:get()/load()。
get()/load()方法:第一个参数代表要查询的实体类或者表,第二个参数表示要查询的对象的主键.
get()和load()的区别
1. 在不考虑缓存的情况下,get()方法会在调用之后立刻向数据库发出SQL语句,返回持久化对象。load()在调用之后返回的是一个代理对象,该对象只保存一个id属性,只有在其他非主键属性被使用到时才发出SQL语句。
2. 当查询的数据不存在时,get()返回的是null。而load()则抛出org.hibernate.ObjectNotFoundException.

你可能感兴趣的:(javaWEB)