首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate学习二

2012-09-25 
hibernate学习2get和load区别get(class,id)先在内存中查找,查找不到再到数据库中查找,还查找不到,返回null

hibernate学习2
get和load区别
get(class,id)先在内存中查找,查找不到再到数据库中查找,还查找不到,返回null;
load(class ,id)直接在数据库中查找,查找不到报SQL异常。

session flush()方法
修改持久对象
Transaction tran = session.beginTransaction();
User user = (User)session.load(User.class, new Integer(1));
user.setName("name2");
session.flush();//等同于session.update(user)方法
tran.commit;


修改托管状态的对象后要从新取得session,然后调用session.update(user)

session delete(obj)方法
先从数据库中加载(load或者get)
然后调用session.delete(obj)从数据表中删除记录,obj便成为临时状态

session saveOrUpdate(obj)方法
保存临时状态对象
更新托管状态对象

复合主键
1、基于实体类属性的实现
Employee表中复合主键为firstName和lastName
Employee类中属性为firstName和lastName
配置文件
<composite-id>
<key-property name="firstName" column="firstName"></key-property>
<key-property name="lastName" column="lastName"></key-property>
</composite-id>

Employee类需要实现序列化接口

2、基于主键类的实现
Employee表中复合主键为firstName和lastName
Employee类中属性Name name;
Name类的属性为firstName和lastName
配置文件
<composite-id name="name" class="com.limf.bean.EmployeeInfo">
<property name="address"></property>
<property name="email"></property>
<property name="birthday"></property>
<property name="high"></property>
</component>

热点排行