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>
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>