2013年10月10日
摘要: 1.什么是AOP?面向切面的编程,找出纸和笔,画一个箭头,两道竖线将这个箭头砍断,这就是AOP举例来说,某个方法正在运行呢,要想在前面加个日志,加在这里,后面加个日志,加在这里,前面加transaction begin后面加transaction commit。实现:动态代理,如果是实现了interface的话,就用jdk里面的Proxy和InvocationHandler就可以搞定,具体的得查查,如果不实现interface,也没关系,可以使用CGLIB包直接操作二进制码,也可以完成,这个没有亲自写过,需要写的话应该问题不大。2.AOP主要用在哪些方面?权限的检查、日志、性能、审计、事务凡是 阅读全文
posted @ 2013-10-10 21:24 凯特的宝贝世界 阅读(482) 评论(0) 推荐(0) 编辑
  2013年10月8日
摘要: 添加注解时spring是添加在set方法上而hibernate是添加在get方法上事务应该加在service层上,而不是加在dao层上,如果加在dao层上回滚的时候只能回滚一个dao的实现。事务处理过程中遇到RuntimeException时会自动回滚。@Transactional的properties中最重要的是事务的传播特性propagation,默认值是REQUIREDSupport a current transaction, create a new one if none exists. 阅读全文
posted @ 2013-10-08 17:04 凯特的宝贝世界 阅读(117) 评论(0) 推荐(0) 编辑
  2013年9月28日
摘要: 动态代理是实现AOP的绝好底层技术JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。其中 InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,在并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编织在一 起。而Proxy为InvocationHandler实现类动态创建一个符合某一接口的代理实例。这样讲一定很抽象,我们马上着手动用Proxy和InvocationHandler这两个魔法戒对上一节中的性能监视代码进行AOP式的改造。首先,我们从业务类ForumServiceImpl 中删除性能 阅读全文
posted @ 2013-09-28 22:27 凯特的宝贝世界 阅读(218) 评论(0) 推荐(0) 编辑
  2013年9月26日
摘要: 当有一件事情需要在多个方法上面都要加相同的逻辑的时候用动态代理会省很多事情。举个例子:有一些实现中的方法,比如说想监测一下这些方法的性能,怎么监测呢?方法执行之前记个时间,方法执行之后记个时间实现如下:编写LogInterceptor类使其实现InvocationHandler接口,类体为:private Object target;public Object getTarget() {return target;}public void setTarget(Object target) {this.target = target;}public void beforeMethod(Metho 阅读全文
posted @ 2013-09-26 20:24 凯特的宝贝世界 阅读(150) 评论(0) 推荐(0) 编辑
  2013年9月15日
摘要: a)window – preferences – myeclipse – xml – xml catalogb)User Specified Entries – addi.Location:D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsdii.URI:file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsdiii.Key Type:Schema Lo 阅读全文
posted @ 2013-09-15 17:15 凯特的宝贝世界 阅读(165) 评论(0) 推荐(0) 编辑
  2013年9月13日
摘要: 1.脏读(读到了另一个事务在处理中还未提交的数据)时间取款事务A存款事务BT1开始事务T2开始事务T3查询账户余额为1000元T4汇入100元把余额改为1100元T5查询账户余额为1100元(读取脏数据)T6回滚T7取款1100T8提交事务失败2.不可重复读(在同一个事务中对同一个数据前后读两次的值是不一样的)时间取款事务A存款事务BT1开始事务T2开始事务T3查询账户余额为1000元T5汇入100元把余额改为1100元T5提交事务T6查询帐户余额为1100元T8提交事务3.幻读(说的是插入和更新的问题,在你读的过程中,另外一个事务可能往里面插入了一条新数据,影响了读取的结果)时间查询学生事务 阅读全文
posted @ 2013-09-13 20:36 凯特的宝贝世界 阅读(2573) 评论(0) 推荐(0) 编辑
  2013年8月24日
摘要: 解决方法:1. 在测试类的beforeClass方法上加try-catch块 2. 添加main方法,里面添加beforeClass(); 阅读全文
posted @ 2013-08-24 15:22 凯特的宝贝世界 阅读(229) 评论(0) 推荐(0) 编辑
  2013年8月23日
摘要: 在实际工作中往往是先建表然后再生成类原因:建好数据库表之后往往要对数据表进行一些优化,比如说建索引,比如说建中间表,比如建视图。如果先建类的话这些优化是无法生成的 阅读全文
posted @ 2013-08-23 15:43 凯特的宝贝世界 阅读(159) 评论(0) 推荐(0) 编辑
  2013年8月22日
摘要: Map maps = new HashMap();maps.put("_id", "id");maps.put("_name", "name");maps.put("_age", "age");String str1 = "";for(String s : maps.keySet()) { str1 += s + ",";}str1 = str1.substring(0, str1.length() - 1);System.out.pr 阅读全文
posted @ 2013-08-22 20:25 凯特的宝贝世界 阅读(157) 评论(0) 推荐(0) 编辑
  2013年8月20日
摘要: 解决方法:使用rs.getString();前一定要加上rs.next();原因:ResultSet对象代表SQL语句执行的结果集,维护指向其当前数据行的光标。每调用一次next()方法,光标向下移动一行。最初它位于第一行之前,因此第一次调用next()应把光标置于第一行上,使它成为当前行。随着每次调用next()将导致光标向下移动一行。在ResultSe对象及其t父辈Statement对象关闭之前,光标一直保持有效。 阅读全文
posted @ 2013-08-20 12:00 凯特的宝贝世界 阅读(264) 评论(0) 推荐(0) 编辑