- 浏览: 1993567 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
我们知道,在Hibernate中除开查询数据之外.对数据库进行,添加,修改,删除数据的时,需要对事务的手动提交.
在session对数据保存数据时,都需要手动开启事务,这样的操作非常的繁琐.
所以,我们决定使用Proxy类.去帮助我们处理,这样的操作.
Transaxtion tx = session.beginTransaction();
session.save(obj);
tx.commit();
Proxy类,具体的实现如下:
package pack.hibernate.basedao; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import org.hibernate.Session; import org.hibernate.Transaction; import pack.hibernate.sessionfactory.HibernateSessionFactory; /** * 动态代理类; * 必须实现InvocationHandler * @author zhouhaitao * */ public class MyProxy implements InvocationHandler{ //根据构造方法给业务对象初始化; //代理业务对象 private Object service; public MyProxy(Object service){ this.service = service; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Session session = HibernateSessionFactory.getSession(); Transaction tr = session.beginTransaction(); Object obj = null; try { //会自动调用反射方法(调用原来的业务方法) obj = method.invoke(service, args); tr.commit(); } catch (Throwable e) { tr.rollback(); e.printStackTrace(); } return obj; } }
之后,通过代理工厂负责,创建创建每一个的事务代理的实例.具体代码如下:
package pack.hibernate.basedao; import java.lang.reflect.Proxy; /** * 根据代理类生成业务代理对象; * @author zhouhaitao */ public class MyServiceFactory { public static Object getObject(Object service){ //1.service加载器 //2.service实现的接口 //3.代理对象 return Proxy.newProxyInstance(service.getClass().getClassLoader(), service.getClass().getInterfaces(),new MyProxy(service)); } }
//然后,我们再Struts Action中. 根据UserLoginServiceImpl业务实现类,通过
MyServiceFactory工厂。获得LoginService接口. 则使用这个接口对象.进行操作即可。
ILoginService uis=(ILoginService)MyServiceFactory.getObject(new UserLoginServiceImpl());
发表评论
-
大型互联网服务集成平台:springmvc+mybatis+restful+webservice+quartz+bootstrap html5
2015-04-13 21:49 81SpringMVC + Mybatis + SpringSe ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:33 83SpringMVC + Mybatis + SpringS ... -
Maven构建大型互联网架构springmvc+mybatis+Restfull+Webservice+Bootstrap
2015-04-12 23:28 71SpringMVC + Mybatis + SpringS ... -
手机App后台架构:Springmvc+SpringSecurity+mybatis+Rest+Quartz+Bootstrap Html5( Maven构建)
2015-04-09 01:39 76APP后台架构Maven构建,模拟大型互联网架构,支持高并发 ... -
maven构建springmvc+mybatis+rest+webservice+bootstrap html5(cms开源项目)
2015-04-09 01:21 85SpringMVC + Mybatis + SpringS ... -
通过 ServletContextEvent 获取spring的applicationContext文件所在的路径
2012-01-09 13:33 13797public class UserStatusLi ... -
通过WebApplicationContextUtils工具类获取ApplicationContext对象.
2011-12-18 21:03 10245通过WebApplicationContextUtils工具类 ... -
Spring中二级缓存的配置
2011-12-18 20:40 22411.首先,在spring的hibernate配置里(app ... -
springframework java.lang.ClassNotFoundException
2011-12-11 23:49 2575springframework java.lang. ... -
java.lang.ClassNotFoundException: org.apache.commons.collections.map.LinkedMap
2011-12-11 23:23 3285下面这个错误是少了commons-collections.ja ... -
net.fckeditor.connector.ConnectorServlet java.lang.ClassNotFoundException: net.
2011-11-17 14:56 2529今天在整合struts2+ibatis2.16+spring2 ... -
log4j文件日志配置
2011-11-16 19:03 2875下面是一段最常见的日志配置模板: #输出到控制条to co ... -
Line: 209 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:209:-1
2011-11-14 21:27 1579问题链接: http://www.iteye.com/pro ... -
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStore
2011-11-14 14:34 14807Exception in thread "main& ... -
获取容器中WEB-INF或者classes目录下的配置文件
2011-11-04 17:07 5844获取Tomcat容器中WEB-INF路径下的文件. 在Ser ... -
解决spring配置文件没有提示的问题。
2011-11-03 00:16 2766我们使用eclipse编辑spring ... -
The reference to entity "characterEncoding" must end with the ';' delimiter
2011-10-06 12:44 2187在配置Spring 的数据源的时候,想把url配置下面加一个 ... -
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
2011-10-06 12:31 6109在配置Spring文件的时候..从别的文件中复制过来的头文件。 ... -
java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
2011-10-05 22:59 12875本人在整合Struts2+Hibernate3.32+Spri ...
相关推荐
4. `ImageA.java`:这可能是一个处理图像的类,可能是代理模式中的目标对象,也可能是在代理类中被代理的对象。 5. `PageProxy.java`:这可能是一个页面代理类,用于处理与页面相关的操作,可能是为了添加额外的...
在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。Proxy类是用于创建一个代理对象,而InvocationHandler接口则定义了代理对象调用方法时的行为。 1. **...
在Java编程中,Proxy模式的应用非常广泛,尤其是在处理远程调用、权限控制、事务管理等场景。 1. **代理模式的概念** 代理模式是一种结构型设计模式,它创建了对象的一个代理以控制对这个对象的访问。代理对象在...
代理模式是软件设计模式中的一个重要组成部分,它在Java编程中扮演着举足轻重的角色。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原对象的访问。在实际应用中,代理模式常...
在这些模式中,代理模式(Proxy Pattern)是一种常用的结构型设计模式,它允许我们为一个对象创建一个代理,该代理对象在客户端和目标对象之间起到中介的作用,可以增加额外的功能或控制访问。 代理模式分为两种...
代理模式的应用场景非常广泛,比如在数据访问对象(DAO)中添加缓存功能、远程服务调用、事务管理等。理解并熟练运用代理模式,能够帮助开发者更好地设计和优化系统,提高代码的灵活性和可扩展性。在实际项目中,...
在Java编程中,代理模式是一种设计模式,它允许我们在不修改原有对象的基础上,在对象周围创建一个代理对象,这个代理对象可以扩展目标对象的功能或者控制对目标对象的访问。代理模式通常用于实现动态代理、远程代理...
在这个主题“代理模式java代码 Proxy(5) 2个代理类”中,我们可以理解为将介绍两种不同的代理类实现。 1. 静态代理 在静态代理中,我们需要创建一个接口,然后让目标对象和代理对象都实现这个接口。代理类会持有...
代理模式可以通过继承、接口或动态代理(如Java的`java.lang.reflect.Proxy`类)来实现。具体选择哪种方式取决于实际需求和语言特性。 总的来说,代理模式是一种灵活的设计模式,它可以让我们在不修改原有对象的...
Java静态代理模式是一种设计模式,它允许我们为一个对象提供一个代理,以便增强或扩展其功能,...然而,由于其存在的局限性,如需更灵活的代理机制,可以考虑使用Java的动态代理模式(如Java.lang.reflect.Proxy)。
Proxy代理模式是面向对象设计模式中的重要组成部分,它在软件工程中扮演着关键角色,尤其在Java编程中。代理模式的主要目的是为一个对象提供一个替身或者占位符,以便控制对这个对象的访问。这种设计模式允许我们...
装饰模式和动态代理模式是Java编程中两种非常重要的设计模式,它们都在代码的扩展性和灵活性方面发挥着关键作用。下面将分别对这两种模式进行详细解释,并结合手写的数据库连接池和动态代理模式的使用进行深入探讨。...
本文将深入探讨Java中的动态代理,特别是基于`java.lang.reflect.Proxy`类的使用。 首先,`java.lang.reflect.Proxy`是Java标准库中用于生成动态代理类的关键类。它允许我们创建一个新的接口实现类,而无需手动编写...
总结来说,Java动态代理通过`Proxy`和`InvocationHandler`提供了灵活的代码扩展机制,可以在运行时为对象创建代理,实现在不修改原有代码的基础上添加额外功能。这在处理需要拦截和增强的对象时非常有用,例如日志...
在Java中,`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口是实现动态代理的关键。`InvocationHandler`接口定义了一个`invoke()`方法,当通过代理对象调用方法时,实际会执行这个方法,...
动态代理主要应用于AOP(面向切面编程),如日志记录、事务处理等,而自定义代理则更灵活,可以根据需求定制代理行为。 ```java // 动态代理示例 interface Service { void doSomething(); } class RealService ...
总结来说,Java设计模式中的代理模式提供了一种优雅的方式来控制对目标对象的访问,并扩展其功能。动态代理更是使得这一过程更加灵活,降低了代码的维护成本。通过学习和应用代理模式,开发者可以更好地设计和实现...
Java代理在编程中是一种强大的设计模式,主要用于在不修改原有对象的情况下增强或扩展其功能。在Java中,有两种主要的代理实现方式:静态代理和动态代理。 1. 静态代理: 静态代理是在编译时就已经确定了代理类和...
Java中的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口可以实现动态代理。动态代理在Android中常用于实现事件监听、AOP(面向切面编程)等场景。 **Android中的应用** 1. **数据加载**...
然后,创建一个实现了InvocationHandler接口的类,重写invoke方法,在invoke方法中处理业务逻辑并调用实际目标对象的方法。最后,通过Proxy.newProxyInstance方法生成代理对象,这个对象可以被用来代替原始的目标...