Hibernate学习笔记之三
单一主键
表中由某一列充当它的主键
- assigned 由java应用程序负责生成(手工赋值)
- native 由底层数据库自动生成标识符(MySQL为increasement,Oracle为sequence)。
基本时间类型
对象类型
(Mysql不支持标准SQL的CLOB类型,在Mysql中,用TEXT,MEDIUMTEXT和LONGTEXT类型表示长度超过255的长文本数据)
组件属性
- 实体类中的某个属性属于用户自定义的某个类的对象
<component name="组件对象" class="组件类">
<property name="属性1" column="列1">
<property name="属性2" column="列2">
</component>
单表的增删改查
- save()
- update
- delete
- get/load(单个记录的查询)
User user=(User)session.get(User.class,x);
//通过反射得到要查询的表对应的类对象,x为要查询的记录的主键
//get方法返回Object对象,需要对类型进行强制转换
//load方法使用方法与get方法相同
get方法与load方法的区别:
1.不考虑缓存的情况下,get方法在调用之后立即向数据库发送sql语句,返回持久化对象。
load方法调用之后返回一个代理对象,只保存实体对象的id,直到使用该对象的非主键属性时才会发出sql语句。
2.查询数据库不存在的数据时,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException。