第4.22课 上课 增删改查操作
4_22

增删改查操作
保存(新增)

1.保存(添加)
-- Serializable save(entity); // entity : 持久化状态
-- void saveOrUpdate(entity); // entity : 持久化状态
-- void persist(entity); // entity : 持久化状态
-- Object obj = merge(entity); // entity : 瞬态,obj : 持久化状态
save
save()方法:
-- 它会立即往数据库表中插入数据(马上生成insert语句),等到事务提交时数据库表才会有数据。
-- 调用save方法有返回值, 它的返回值是主键id值。
User user = new User(); // user --> 瞬态
user.setAge(18);
user.setName("hanfeili");
user.setPhone("13888888888");
Serializable id = session.save(user); // user --> 持久化状态
.
persist
persist()方法:
-- 它会延迟往数据库表中插入数据.(在事务没有开启情况下).
-- 调用该方法没有返回值.要想获取主键id值需调用对象的getId()方法.
User user = new User(); // 瞬态
user.setAge(18);
user.setName("hanfeili2");
user.setPhone("13888888886");
session.persist(user); // user --> 持久化状态
// 判断Session的一级缓存中是否包含这个对象,true: 持久化状态
System.out.println(session.contains(user));
saveOrUpdate
saveOrUpdate()方法:
-- 它集成的添加与修改两个功能.
-- 想用该方法做添加,不要设置对象的主键值即可.
User user = new User(); // 瞬态
user.setAge(18);
user.setName("hanfeili3");
user.setPhone("13888888887");
session.saveOrUpdate(user); // user --> 持久化状态
// 判断Session的一级缓存中是否包含这个对象,true: 持久化状态
System.out.println(session.contains(user));
merge
merge()方法:
-- 它混合集成了添加与修改两个操作。
-- 想用该方法做添加,不要设置对象的主键值即可.
User user = new User(); // 瞬态
user.setAge(18);
user.setName("hanfeili4");
user.setPhone("13888888886");
User u = (User)session.merge(user); // u --> 持久化状态
// 判断Session的一级缓存中是否包含这个对象,true: 持久化状态
System.out.println(session.contains(user)); // 瞬态
System.out.println(session.contains(u));// u --> 持久化状态
修改(更新)

持久化状态
持久化状态下做修改:
-- 只需要调用该对象的setXxx()方法对实体做修改即可.
-- 对持久化状态对象做的修改,会同步到底层的数据库表中,
它不是立即同步到底层的数据库,默认是在事务提交时才同步.
User user = (User)session.get(User.class, 1); // user : 持久化状态
// 判断Session的一级缓存中是否包含这个对象,true: 持久化状态
System.out.println(session.contains(user));
user.setAge(100);
user.setName("hanfeili");
脱管状态
脱管状态下做修改:
-- 创建持久化类对象设置它的主键值(瞬态转化成脱管).
-- 调用脱管状态下对象的setXxx方法设置属性值.
-- 调用Session的三个方法进行修改(update、saveOrUpdate、merge).
update
update()方法:
-- 脱管状态下对象做修改.
User u = new User(); // 瞬态
u.setId(1); // 脱管
u.setAge(200);
session.update(u); // u --> 持久化状态
System.out.println(session.contains(u));
saveOrUpdate
saveOrUpdate()方法:
-- 脱管状态下对象做修改.
User u = new User(); // 瞬态
u.setId(1); // 脱管
u.setAge(210);
u.setName("admin");
session.saveOrUpdate(u); // u --> 持久化状态
System.out.println(session.contains(u));
merge
merge()方法:
-- 脱管状态下对象做修改.
User u = new User(); // 瞬态
u.setId(1); // 脱管
u.setAge(210);
u.setName("admin");
User us = (User)session.merge(u); // us --> 持久化状态
System.out.println(session.contains(u)); // u --> 脱管状态
System.out.println(session.contains(us)); // us --> 持久化状态
删除

持久化状态
持久化状态下做删除:
-- 从数据库表中根据主键值获取一个对象(持久化状态对象).
User user = (User)session.get(User.class, 1); // user : 持久化状态
session.delete(user); // user 瞬态
// 判断Session的一级缓存中是否包含这个对象,true: 持久化状态
System.out.println(session.contains(user));
脱管状态
脱管状态下做删除:
-- 创建持久化类对象设置它的主键值(瞬态转化成脱管).
User u = new User(); // u -> 瞬态
u.setId(3); // u -> 脱管
session.delete(u); // 瞬态
浙公网安备 33010602011771号