单表CRUD操作

存储:把对象模型变成关系模型
加载:关系模型变成对象模型(把数据库里的记录变成实体对象)

一、get和load区别

  • 在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,返回持久化对象;load方法会在调用后返回一个代理对象。该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句。
  • 查询数据库中不存在的数据时,get方法返回null,load方法抛出ObjectNotFoundException。

二、cglib代理:目标类的子类

语法:

1、继承目标类
2、覆写了目标类的所有get、set方法
3、在覆写的方法里,首先判断target是否为null,如果为null,就session.get(User.class,”主键”) 访问数据库拿到记录封装到user对象,
把user对象的地址给target,然后就调用target.getName()…..
如果不为null,就直接调用target.getName()

session.load(User.class,"id值")  //创建代理对象
没发sql语句,创建了user对象(代理对象),这个代理对象是user类的子类对象
特点:是目标类的子类对象,对user类的所有方法都进行了覆写(没有继承私有属性)

在代理对象中有个实例全局变量target

三、pojo实体类(也叫数据bean)

1、包声明
2、导入相应的包
3、类名和文件名相同
4、显示的无参构造方法
5、属性私有化,提供get,set方法
6、不能定义成final
7、提供无参的构造方法

四、删除:

session.delete(user);

执行完delete后,map和key里有记录,放到临时集合的deletion里
commit后,只把实体类在数据库中对应的记录删除了,user对象处于瞬时态
在session里的map里没有记录,user里有记录

猜你喜欢

转载自blog.csdn.net/Pluto__lxh/article/details/82562202