本帖最后由 学习让我快乐啊 于 2018-5-27 17:07 编辑
反射
获得类的字节码对象:Class对象.三种获得的方式. *类名.class; ) *类的实例.getClass(); *Class.forName(“类全名”); Class对象的newlnstance()方法可以创建对象 成员方法Method getDeclaredMethod(String name, params.class...); setAccessible(true); method.invoke(Object object, params...); MVC:
Jsp+Servlet+JavaBean称为MVC的设计模式 M:Model:模型层 V:View:视图层 C:Controller:控制层 Java中的内省技术内省:用来获得JAVABean的属性及属性的get或se方法 JavaBean:就是一个满足了特定格式的Java类: *需要提供无参数的构造方法 *属性私有 *对私有的属性提供oublic的get/set方法 MVC和EE开发三层结构的关系: 内省的代码: publicvoid demo1() throws Exception{ // 获得了Bean的信息 BeanInfo beanInfo =Introspector.getBeanInfo(User.class); // 获得Bean的属性描述了 PropertyDescriptor[] pds =beanInfo.getPropertyDescriptors(); for(PropertyDescriptor pd:pds){ System.out.println(pd.getName()); /*pd.getReadMethod();// 获得get方法 pd.getWriteMethod();//获得set方法. */ } } 使用内省封装一个MyBeanUtils: public class MyBeanUtils { publicstatic void populate(Object obj,Map<String,String[]> map) throwsException{ // 获得类的所有的属性的名称: BeanInfo beanInfo =Introspector.getBeanInfo(obj.getClass()); // 获得类中所有的属性: PropertyDescriptor[] pds =beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : pds) { if(map.containsKey(pd.getName())){ Method method = pd.getWriteMethod(); // 执行set方法: method.invoke(obj,map.get(pd.getName())[0]); } } } } 事务的概述
什么是事务: *事务指的是逻辑上的一组操作,组成者祖操作的各个逻辑单元要么一起成功,要么一起失败 事务特性:原子性:强调事务的不可分割 一致性:强调的是事务的执行的前后,数据的完整性要保持一致 隔离性:一个事务的执行不应该收到其他事务的干扰 持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库 设置事务的隔离级别:*read uncommitted :未提交读,以上情况都能发生 *read committed :已提交读.解决脏读,但是不可重复读和虚读有可能发生 *repeatable read :可重复读.避免脏读,不可重复读,但是虚读有可能发生 *serializable :串行化的.可以解决以上的所有情况 读问题: *脏读:一个事务读到另一个事务还没有提交的数据 *不可重复读:一个事物都到了另一个事务已经提交的update的数据,导致在当前的事务中多次查询结果不一致 *虚读/幻读:一个事务读到另一个事务已经提交的insert的数据,导致在当前的事务中多次查询结果不一致 JDBC中的事务管理JDBC的事务的管理的API: void setAutoCommit(boolean autoCmmit) 将此连接的自动提交模式设置为给定状态 vod commit() 使所有上一次提交/回滚后进行的更改称为持久更改,并释放此Connection对象当前持有的所有数据库锁 void rollback() 取消在当前事务中进行的所有更改,并释放Connection对象当前持有的所有数据库锁 DBUtils实现事务管理:没有事务管理: QueryRuuer(DataSource ds) query(String sql, ResultSetHandler<T> rsh, Object...params) int update(String sql, Object... params) 有事务管理: QueryRunner() query(connection conn, String sql, ResultSetHandler<T> rsh,object...params) int update(Connection conn, String sql,Object param) |