Day10

mysql中级联操作 CASCADE

ON DELETE CASCADE :级联删除
ON UPDATE CASCADE :级联修改

当前更新/删除主表的数据,从表数据的随之变化!

-- 修改主表的数据,1号部门---3号部门 (级联修改)
UPDATE dept SET id = 3 WHERE id = 1;

-- 删除主表的数据,从表数据随之删除...(级联删除)
DELETE FROM dept WHERE id = 2 ;

-- sql删除外键 alter table 表名 drop FOREIGN KEY 外键名称;
ALTER TABLE emp DROP FOREIGN KEY dept_emp_fk;

-- 通过sql添加外键
-- alter table 表名 
       -- add CONSTRAINT 外键名称 FOREIGN KEY   从表的某个id
    -- REFERENCES  
    -- 主表的某个字段(主键字段id)
    -- 级联修改
    -- 级联删除
    
ALTER TABLE emp 
ADD CONSTRAINT dept_emp_fk FOREIGN KEY 
(dept_id) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE ;

静态代理/jdk动态代理

静态代理是指,在程序运行前,由程序员创建或特定工具自动生成源代码并对其编译生成.class文件。
静态代理的特点:  代理角色和真实角色都需要实现同一个接口
               真实角色专注于自己的事情
               代理角色目的就是帮助真实角色完成一件事情
jdk动态代理:是在程序的执行过程中,通过反射产生的代理对象!
jdk动态代理特点:基于接口实现的

静态代理
静态代理需要手写代理实现类去实现接口,并去重写接口中的每个方法。
非常不灵活且麻烦,因为需要对每一个目标对象创建一个实现类;而且一旦接口中新增一个方法,目标对象和实现类都需要进行相应的调整
实现步骤
定义一个接口和实现类;
创建一个代理实现类同样实现这个接口;
将目标对象注入到代理类,然后在代理类的对应方法调用目标对象的相应方法

动态代理
与静态代理相比,动态代理更加灵活。我们不需要针对每一个目标对象都单独创建一个代理类,并且也不必须要实现接口,可以直接代理类。
从 JVM 层面来说,动态代理是在运行时期动态生成类字节码并加载到 JVM 中去。
动态代理的实现方式有很多种,最主要的还是 JDK 动态代理 和 CGLIB 动态代理。

 JDK 动态代理
JDK 动态代理是对实现了接口的实现类进行代理。
JDK 动态代理的核心是 InvocationHandleer 接口 和 Proxy 类。

 Proxy 类
Proxy 类中使用频率最高的方法是 newProxyInstance,用来生成一个代理对象。
参数:
loader:类加载器,用来加载代理对象;
interfaces:被代理类实现的一些接口;
h:实现了 InvocationHandler 接口的对象

 InvocationHandler 接口
要实现 JDK 动态代理,还需要实现 InvocationHandler 接口来自定义增强逻辑,当我们代理对象调用一个方法时,方法的调用会自动转到 InvocationHandler 实现类的 invoke() 方法上。

参数:
proxy:动态生成的代理类;
method:与代理对象调用的方法相对应;
args:method 方法相对应的参数
当你通过 Proxy 类的 newProxyInstance 方法创建的代理对象调用一个方法时,实际上会调用到 InvocationHandler 实现类的 invoke() 方法,可以 在 invoke() 方法内增加自定义的逻辑来增强原生方法。

实现步骤:
定义一个接口和实现类;
定义一个类去实现 InvocationHandler 接口并重写 invoke() 方法,在 invoke() 方法内调用原生方法并自定义增强该方法;
通过 Proxy 类的 newProxyInstance 方法创建一个代理对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值