第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); // 瞬态

posted on 2018-01-31 22:24  東風★破  阅读(174)  评论(0)    收藏  举报

导航