http://lavasoft.blog.51cto.com/62575/27069 处理比较好时间的操作的另一种方法就是多线程,把耗时的操作仍个另一个线程去做,被开启的线程可能在主线程之后完成,不能保证操作的完整性,但是可以节省主线程的反应时间 Java多线程编程总结 一、认识多任务、多进程、单线程、多线程 要认识多线程就要从操作系统的原理说起。 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情。比如你在copy东西的时候不能rename文件名。为了提高系统的利用效率,采用批处理来批量执行任务。 现在的操作系统都是多任务操作系统, ...
您有没有想过,为什么会有六种事务划分属性(NotSupported、Required、Supports、RequiresNew、Mandatory和Never)?这六种都是由容器托管事务 (CMT)的bean来支持的,但如果使用的是bean托管事务(BMT),EJB规范所能提供的功能难道就只有通过UserTransaction接口启动和提交/回滚事务吗?显然,CMT模型好像更强大,比如,BMT不能使当前事务挂起然后恢复,这就意味着在BMT bean中无法仿真RequiresNew和NotSupported划分,至少是在使用UserTransaction接口时。   虽然EJB规范并没有解释为 ...
最近写书,写到JNDI,到处查资料,发现所有的中文资料都对JNDI解释一通,配置代码也是copy的,调了半天也没调通,最后到SUN的网站参考了一下他的JNDI tutorial,终于基本上彻底明白了 和多数java服务一样,SUN对JNDI也只提供接口,使用JNDI只需要用到JNDI接口而不必关心具体实现: private static Object jndiLookup() throws Exception { InitialContext ctx = new InitialContext(); return ctx.lookup("java:comp/env/systemS ...
  JTA 是事务服务的 J2EE 解决方案。本质上,它是描述事务接口(比如 UserTransaction 接口,开发人 员直接使用该接口或者通过 J2EE 容器使用该接口来确保业务逻辑能够可靠地运行)的 J2EE 模型的一部分 。JTA 具有的三个主要的接口分别是 UserTransaction 接口、TransactionManager 接口和 Transaction 接 口。这些接口共享公共的事务操作,例如 commit() 和 rollback(), 但是也包含特殊的事务操作,例如 suspend(),resume() 和 enlist(),它们只出现在特定的接口上,以便在实 ...
public class UserTransaction { private static Map threadDbconnectionMap = new HashMap(); public void begin() { dataSource.getConnection().setAutoCommit(false); threadDbConnectionMap.put(Thread.currentThread(), dataSource.getConnection()); dataSource.getConn ...
1.资料 《Java Transaction Design Strategies》  InfoQ minibook,最好的电子文档,Java事务处于懵懂状态的必读。 《Expert One on one J2EE Development Without EJB 中文版》与Spring参考手册中文版  中的相关章节可以看到Spring guys的意见。http://www.leftworld.net/online/j2ee/14.htmhttp://www.ibm.com/developerworks/cn/opensource/os-ag-ejbtran ...
随着网站(www.jzease.com)的扩大,在三个月的时间里Myslq的表格从四十几张,扩到现在的一百多张,以后肯定还会继续扩大为了更好的管理和运行,着手开始分数据库,这就涉及到跨数据库事务,我们使用的是Tomcat,它本身不支持XA,供我选择的就只有spring+JTA,JTA的实现就只有两种,一种是JOTM,另一种是AtomikosTransactionsEssentials.下面是JOTM的实现: DataSource: <bean id="jtaTxManager" class="org.springframework.transaction.jta.JtaTransacti ...
我根据自己的经验谈一下个人看法。这是一个非常复杂的话题。三言两语可能说不清楚。 1. Transaction 分两种,Local Transaction 和 Global Transaction。 涉及到一个Connection的Commit,称为Local Transaction。 涉及到多个Connection的Commit,称为Global Transaction。 楼主提到的是,Global Transaction. 2. Global Transaction 需要XA接口(包括在JTA里面)的支持。 import javax.sql.XAConnection; import j ...
最后一个问题就是更新了,对于blob没什么好讲的,但是clob倒是有点需要注意的,问题是这样的,如果clob原来插入的数据内容为: 123456789,现在你update为:ABC,等你查看数据库的插入结果时你会发现更新后的数据其实是:ABC456789,相信你已经知道原因了,那么看看以下的具体处理方法吧: int k = 0; for (int i=9; i >=0; i--) { // 选择并锁定该记录 LargeObject large = (LargeObject)s ...
  • 14:50
  • 浏览 (114)
  • 评论 (0)
如果你看了前面的三篇文章也许会觉得自己已经掌握透了blob和clob的应用,而且所有测试程序都跑过了,没有问题啊,对于这个主题还有什么可讲的啊,那就让我用最后两篇来告诉你真正项目中会遇到的问题。 首先前面的hibernate中的应用是针对hibernate2.x的,现在3.x中对blob和clob增加了 org.hibernate.lob.SerializableBlob和org.hibernate.lob.SerializableClob类的封装。 其次如果你将前面的测试程序放到weblogic的容器中通过weblogic的数据源得到连接的话,你会发现 oracle.sql.BLOB b ...
Oracle是强大但在方便易用性上实在不敢恭维,自己搞了套LookAndFeel的Swing控制台奇丑无比且不好用(我在这并非抨击Swing,只是遗憾Oracle没有用好Swing,我可是Swing的坚定拥护者,过一阵我会专门开个Swing专栏),我真搞不懂Oracle的JDBC驱动就不能再封装一层,底层透明的自动插入empty_blob()/empty_clob(),不过如果你是用mysql,那么恭喜你mysql的大字段操作是很舒服的,不需要做任何而外的处理,且不要求启事务。 CREATE TABLE `emhookup` ( `picid` int(10) unsigned NOT ...
我发现对于Oracle 数据库,如果数据量较少直接插入数据到blob和clob字段也能成功,但是数据量一大就不行了,但大到什么程度就不一定了,所以一般在项目中应用还是得老老实实的按照上面的步骤进行,不过应用上面这个特性能够使我们在hibernate中顺利的操作Oralce的这种类型字段。 PersonModel person = new PersonModel(); person.setName("林意炜"); person.setEmail("sailing8036@yahoo.com.cn"); // 插入一个小数据数据 person.setImage(Hibe ...
这种大容量字段有何用,也许大部分人马上联想到用来存储图片、文章,不过俺确是用它来存储Java串行化对象,当时用Swing做了个绘图工具,为了数据集中管理决定把图纸内容存到数据库,大家可以想象如果不用blob类型的字段,那表该如何设计呢?图元的种类N多,每个种类的属性N多,而且种类和属性都会变化,再加上还有图层的关系,最重要的一点就是存储速度(这个问题稍候我会解释)问题,要想设计出能完美解决以上问题的表结构将是想当困难的事,在项目进度的压力下对于两年前刚刚摆脱强大然而设计模式恶心的MFC,正投奔Java正营,边学语言边“设计”绘图工具的我,唯一能想到的而且最终证明在项目中成功实施的就是blob ...