Spring之AOP
来源:互联网 发布:如何修改淘宝发货地址 编辑:程序博客网 时间:2024/06/06 16:32
AOP-面向切面,我们在开启一个事务的时候,每次都需要关闭,例如我们通过JDBC连接一个数据库的时候,我们必须每一次使用完连接之后都必须使用close()关闭连接。这样很容易出现忘记关闭连接造成了资源的浪费,而AOP就可以实现自动的关闭连接,不用我们每次编写程序的时候自己编写代码关闭。
本文以数据库操作事务为例来讲述AOP,实验代码如下:
package org.liky.ssh.dao.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Restrictions;import org.liky.ssh.dao.INewsDAO;import org.liky.ssh.pojo.News;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class NewsDAOImpl extends HibernateDaoSupport implements INewsDAO { public void doCreate(News vo) throws Exception { super.getHibernateTemplate().save(vo); } public void doRemove(Integer id) throws Exception { super.getHibernateTemplate().delete(findById(id)); } public void doUpdate(News vo) throws Exception { super.getHibernateTemplate().update(vo); } public List<News> findAll() throws Exception { return getHibernateTemplate().loadAll(News.class); } public List<News> findAll(final int pageNo, final int pageSize, final String keyword, final String column) throws Exception { // Spring没有提供针对HQL方式的分页查询方法 // 1、使用Criteria来完成分页查询 DetachedCriteria c = DetachedCriteria.forClass(News.class); // 加入条件 c.add(Restrictions.like(column, "%" + keyword + "%")); List all = super.getHibernateTemplate().findByCriteria(c, (pageNo - 1) * pageSize, pageSize); // 2、自行扩展Spring功能,添加分页查询方法,使用的方式为匿名内部类 // List all = super.getHibernateTemplate().executeFind( // new HibernateCallback() { // public Object doInHibernate(Session session) // throws HibernateException, SQLException { // String hql = "FROM News AS n WHERE n." + column // + " LIKE ?"; // Query query = session.createQuery(hql); // query.setString(0, "%" + keyword + "%"); // query.setFirstResult((pageNo - 1) * pageSize); // query.setMaxResults(pageSize); // // return query.list(); // } // }); return all; } public News findById(Integer id) throws Exception { return super.getHibernateTemplate().get(News.class, id); } public int getAllCount(String keyword, String column) throws Exception { String hql = "SELECT COUNT(n) FROM News AS n WHERE n." + column + " LIKE ?"; List all = super.getHibernateTemplate().find(hql, "%" + keyword + "%"); return ((Long) all.get(0)).intValue(); }}
通过以上代码可以看出我们可以通过extends HibernateDaoSupport来调用super.getHibernateTemplate().save(vo)对数据库进行操作,而且不用关闭连接。
0 0
- Spring之Spring AOP
- Spring AOP之aop:config
- Spring AOP之ThrowsAdvice
- Spring AOP之ThrowsAdvice
- Spring之AOP IOC
- Spring总结之AOP
- Spring总结之AOP
- Spring AOP之Jruby
- Spring AOP 之 AfterAdviceDemo
- Spring AOP 之 AfterAdviceDemo2
- Spring AOP 之 AfterAdviceDemo3
- Spring AOP 之 AroundAdviceDemo
- Spring AOP 之 AroundAdviceDemo2
- Spring AOP 之 AroundAdviceDemo3
- Spring AOP 之 BeforeAdviceDemo
- Spring AOP 之 BeforeAdviceDemo2
- Spring AOP 之 BeforeAdviceDemo3
- Spring AOP 之 ControlFlowDemo
- matlab 画cosx
- Redmine Gantt 实现 (Show relations in Gantt diagram)
- CESIUM 配置发布 Getting Started
- Android Studio Error String index out of range 0 字符串索引超出范围
- 为什么要引入友元机制
- Spring之AOP
- Eclipse安装Activiti Designer插件 靠谱(luna)
- Bean的作用域
- Excel导入导出工具类
- openwrt开启Samba作为共享中心 win7如何访问linux samba服务器
- Tomcat性能调优方案
- 函数指针的正常使用,函数指针作为函数参数使用,函数指针作为函数参数使用
- 【已解决】1103:Incorrect table name '' [ SQL语句 ] : SHOW COLUMNS FROM ``
- 设计模式--桥接模式