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.Name">
<key-property name="firstName"></key-property>
<key-property name="lastName"></key-property>
</composite-id>
Name类需要实现序列号接口


组件
和复合主键类似,属性为类属性,可以不用实现序列化接口
Employee类中属性Info info;
配置文件
<component name="info" class="com.limf.bean.EmployeeInfo">
<property name="address"></property>
<property name="email"></property>
<property name="birthday"></property>
<property name="high"></property>
</component>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值