- 浏览: 1972301 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 13734public class UserStatusLi ... -
通过WebApplicationContextUtils工具类获取ApplicationContext对象.
2011-12-18 21:03 10190通过WebApplicationContextUtils工具类 ... -
Spring中二级缓存的配置
2011-12-18 20:40 22071.首先,在spring的hibernate配置里(app ... -
springframework java.lang.ClassNotFoundException
2011-12-11 23:49 2546springframework java.lang. ... -
java.lang.ClassNotFoundException: org.apache.commons.collections.map.LinkedMap
2011-12-11 23:23 3239下面这个错误是少了commons-collections.ja ... -
net.fckeditor.connector.ConnectorServlet java.lang.ClassNotFoundException: net.
2011-11-17 14:56 2493今天在整合struts2+ibatis2.16+spring2 ... -
log4j文件日志配置
2011-11-16 19:03 2846下面是一段最常见的日志配置模板: #输出到控制条to co ... -
Line: 209 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:209:-1
2011-11-14 21:27 1537问题链接: http://www.iteye.com/pro ... -
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStore
2011-11-14 14:34 14766Exception in thread "main& ... -
获取容器中WEB-INF或者classes目录下的配置文件
2011-11-04 17:07 5805获取Tomcat容器中WEB-INF路径下的文件. 在Ser ... -
解决spring配置文件没有提示的问题。
2011-11-03 00:16 2735我们使用eclipse编辑spring ... -
The reference to entity "characterEncoding" must end with the ';' delimiter
2011-10-06 12:44 2147在配置Spring 的数据源的时候,想把url配置下面加一个 ... -
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
2011-10-06 12:31 6058在配置Spring文件的时候..从别的文件中复制过来的头文件。 ... -
java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
2011-10-05 22:59 12841本人在整合Struts2+Hibernate3.32+Spri ...
相关推荐
动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、RPC远程调用、Java 注解对象获取、日志框架、全局性异常处理、事务处理等。 在了解动态代理前,我们需要先了解一下什么是代理模式。 代理模式 代理模式...
设计模式中定义: 为其他对象提供一种代理以控制对这个对象的访问. 为什么要使用Proxy? 1.授权机制 不同级别的用户对同一对象拥有不同的访问权利,如Jive论坛系统中,就使用Proxy进行授权机制控制,访问论坛有两种人:...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
facade门面模式、proxy代理模式、adapter适配器(变压器)模式、composite合成模式、decorator装饰模式、bridge桥梁模式、flyweight享元模式 行为模式 template模板方法模式、memento备忘录模式、observer观察者模式...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
20.5 Java应用通过Hibernate API声明JDBC事务 20.5.1 处理异常 20.5.2 Session与事务的关系 20.5.3 设定事务超时 20.6 Java应用通过Hibernate API声明JTA事务 20.7 Java应用通过JTA API声明JTA事务 ...
设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) ...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
20.5 Java应用通过Hibernate API声明JDBC事务 20.5.1 处理异常 20.5.2 Session与事务的关系 20.5.3 设定事务超时 20.6 Java应用通过Hibernate API声明JTA事务 20.7 Java应用通过JTA API声明JTA事务 ...
20.5 Java应用通过Hibernate API声明JDBC事务 20.5.1 处理异常 20.5.2 Session与事务的关系 20.5.3 设定事务超时 20.6 Java应用通过Hibernate API声明JTA事务 20.7 Java应用通过JTA API声明JTA事务 ...
20.5 Java应用通过Hibernate API声明JDBC事务 20.5.1 处理异常 20.5.2 Session与事务的关系 20.5.3 设定事务超时 20.6 Java应用通过Hibernate API声明JTA事务 20.7 Java应用通过JTA API声明JTA事务 ...
commons-proxy 创建动态代理的库 commons-scxml commons-transaction 处理多级事务的集合 commons-validator 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则 commons-vfs ...
commons-proxy 创建动态代理的库 commons-scxml commons-transaction 处理多级事务的集合 commons-validator 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则 commons-vfs ...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
最后,关键一步还有就是将你的电脑变为网络中的一台服务器,所以你要在你的电脑中装上一个合适的代理服务器软件并运行。 二、本部分常见问题解答 Q:如何修改FTP服务器登录成功或退出时的系统提示信息? A:在相应...
因此我们在应用服务器上建立WEB 时,采用微软的IIS(Microsoft Internet Information Server4.0),为了系统的安全性,安装微软的Proxy Server 作为代理服务器。当然,实际操作时更应该注重IIS本身的安全性。而IIS的...
3.11.1 请求解析和业务处理线程池分离 57 3.11.2 业务线程池隔离 58 3.11.3 业务线程池监控/运维/降级 58 3.11.4 如何使用Servlet 3异步化 59 3.11.5 一些Servlet 3异步化压测数据 64 4 限流详解 66 4.1 限流算法 67...