`

SSH+Oracle批量插入数据小结

阅读更多
    插入数据是一项很简单的操作,但一旦提高了数据量,就变得不那么容易。
    最近项目中使用SSH+oracle数据库,使用C3P0连接池,要求当执行某动作时在2表中各插入一万条数据。于是就采用了jdbc的方式插入。
    先获取一个sequence,再将数据插入到数据库中。一测试时间,崩溃了,用时近3分钟(其中获取两个表的sequence很费时),后来想想以前曾经做过一个类似的项目,使用了主键自增的策略,就将主键改为自增了。再次测试,还可以,不到3秒。将此代码记录下来,以便日后参考。
    顺便说说,可以使用存储过程(尤其是操作多个表插数据),这样效率更快些。

表就省略了,下面是sequence:
create sequence SEQ_TEST
minvalue 1
maxvalue 999999999999999999999999999
start with 126661
increment by 1
cache 20;

这个就是oracle实现自增的触发器了,TB_ID是表中得主键:
create or replace trigger TRI_TEST
  before insert on tb_ticket_log  
  for each row
declare
begin
  select SEQ_TEST.Nextval into:new.TB_ID from dual;
end TRI_TEST;

下面是数据交换层的代码:

	public void save(final List list)
			throws HibernateException, SQLException {
		this.getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {

				Connection conn = session.connection();
				PreparedStatement ps = null;
				PreparedStatement _ps = null;
				String sql = "INSERT INTO TB1(column,...) VALUES (?,...)";
				String _sql = "INSERT INTO TB2(column,...) VALUES(?,...)";

				ps = conn.prepareStatement(sql);
				_ps = conn.prepareStatement(_sql);

				for (int i = 0; i < list.size(); i++) {
					ps.setString(1, "");
					//ps.set...
					ps.addBatch();

					_ps.setString(1, "");
					//_ps.set...
					_ps.addBatch();

					// 每一万次执行并清除session,否则你懂的。
					if (i % 10000 == 0) {
						ps.executeBatch();
						_ps.executeBatch();
						session.flush();
						session.close();
					}
				}
				ps.executeBatch();
				_ps.executeBatch();
				ps.close();
				_ps.close();
				session.flush();
				session.close();
				return null;
			}
		});
	}
分享到:
评论
2 楼 djcbpl 2012-11-09  
我的问题解决了;很好
1 楼 djcbpl 2012-11-09  
太感谢你了

相关推荐

    ssh+oracle整合

    总的来说,SSH+Oracle整合涉及了多个层面的技术,包括前端的MVC框架、业务逻辑的管理、数据持久化和数据库交互,以及数据的展示和处理。这种整合模式为开发大型、复杂的企业级应用提供了坚实的基础。

    SSH+ORACLE好用分页

    在这个场景下,"SSH+ORACLE好用分页"意味着我们将SSH框架与Oracle数据库结合,实现了高效的数据分页功能。 数据分页是Web应用中常见的需求,特别是在处理大量数据时,分页可以提高用户体验,避免一次性加载过多数据...

    SSH+ORACLE通用分页

    总的来说,"SSH+Oracle通用分页"是Java Web开发中常见的需求,它涉及到SSH框架的集成使用和Oracle数据库的高效查询策略。理解并熟练掌握这些知识,对于开发高性能、用户体验良好的Web应用至关重要。在实际项目中,还...

    ssh+oracle企业费用办公管理系统

    SSH+Oracle企业费用办公管理系统是一种基于Java开发的高效能、安全的企业级应用,它整合了Struts、Spring和Hibernate三个框架,与Oracle数据库相结合,为企业提供了一套完整的费用管理和办公自动化解决方案。...

    ssh+oracle分页

    在“ssh+oracle分页”这个主题中,我们将深入探讨如何利用这三个框架与Oracle数据库进行集成,并实现数据的分页显示。 1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。...

    ajax+jQuery+ssh+oracle级联实例

    在IT行业中,构建高效、动态的Web应用是关键任务之一,而"ajax+jQuery+ssh+oracle级联实例"提供了一个具体的实现方案。这个实例涵盖了前端到后端的关键技术,包括异步数据交互(Ajax)、JavaScript库(jQuery)、...

    完美整合(通用分页)SSH+Oracle (需要自己加入jar包,只是源码)

    【SSH+Oracle 整合详解】 SSH(Struts2、Spring、Hibernate)是Java开发中常用的三大开源框架,它们各自负责Web应用的不同层面:Struts2处理MVC模式中的Controller部分,Spring作为整体的IoC(Inversion of Control...

    SSH+Oracle增删查改

    在"SSH+Oracle增删查改"的主题中,我们将探讨如何在SSH框架下使用Oracle数据库进行数据的插入、更新、删除和查询操作。 **1. Struts2** Struts2是MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求和...

    SSH+ORACLE OA管理系统适用新手 功能齐全

    SSH+Oracle OA管理系统是一个专为新手设计的综合型管理平台,它结合了Spring、Struts2和Hibernate(SSH)三大主流Java开发框架,以及Oracle数据库技术,为用户提供了一个功能全面的办公自动化(OA)解决方案。...

    java+SSH+oracle+sqlserver学习笔记

    【Java SSH Oracle SQLServer 学习笔记】 Java是一种广泛使用的面向对象的编程语言,它以其跨平台、开源和丰富的库而闻名。SSH是三个开源框架的缩写,分别是Spring、Struts和Hibernate,它们在Java Web开发中起着至...

    MyEclipse+SSH+Oracle框架搭建

    【SSH+Oracle+MyEclipse框架搭建详解】 SSH框架,由Struts、Spring和Hibernate三个开源框架组成,常用于构建企业级的Java Web应用程序。在MyEclipse6.5环境中,我们将结合Oracle数据库来搭建一个登录框架。以下是...

    javawab图书管理系统jsp+SSH+oracle

    【标题】"javaweb图书管理系统jsp+SSH+oracle"是一个基于JavaWeb技术,结合SSH框架(Struts2、Spring、Hibernate)与Oracle数据库开发的图书管理应用。这个项目展示了如何将这些技术有效地整合在一起,实现一个完整...

    SSH+Oracle上传图片

    【SSH+Oracle上传图片】项目详解 在Java Web开发中,SSH(Struts2、Spring、Hibernate)框架常用于构建企业级应用。本项目重点在于如何通过SSH框架将图片数据存储到Oracle数据库的Blob列中。以下是实现这一功能的...

    java+ssh+oracle

    【描述】:这个“java+ssh+oracle”移动小项目为初学者提供了一个实践平台,旨在帮助他们学习如何将这些技术有效地整合在一起。项目的核心是使用Java语言作为后端开发语言,通过SSH框架实现业务逻辑和数据访问层的...

    ssh+oracle数据库基本框架

    在这个ssh+oracle的例子中,可能包含一个或多个Action类,每个类对应一个特定的用户操作,比如添加数据的Action。 Hibernate作为ORM框架,简化了Java应用程序与数据库的交互。它通过映射Java对象到数据库表,可以将...

    SSH+oracle所需全部包

    SSH+Oracle所需全部包指的是在Java开发中,用于Spring、Struts和Hibernate(简称SSH)三大框架整合,并且能够与Oracle数据库进行交互的所有必要库文件。这些库文件通常包括JAR包,它们提供了各种功能,使得开发者...

    java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)

    【标题】"java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)" 涉及的核心技术是Java Web开发中的几个关键组件,包括ExtJS 2.0前端框架,Spring、Struts2和Hibernate(SSH)后端框架,Oracle 10g数据库以及Lucene ...

    SSH+oracle+jquery 论坛 BBS 练习小型项目升级

    是上一个BBS项目的升级版 使用的技术 jquery-1.8.3 spring2.5 struts-2.1.8 hibernate-3.3.2. Oracle 练习项目 分享下, 注释有不少. 带有sql

    ssh+oracle

    标题“ssh+oracle”指的是在Java开发环境中,使用Spring、Struts和Hibernate(SSH)框架与Oracle数据库进行集成的应用示例。这个项目可能是为了教学或实际工作中的参考,旨在帮助初学者理解如何将这些技术有效地结合...

    ssh+jdbc+oracle所有依赖包

    ssh+jdbc+oracle所有依赖包(commons-pool2-2.8.0.jar,commons-collections-3.2.2.jar,commons-dbcp2-2.7.0.jar,ojdbc8.jar)

Global site tag (gtag.js) - Google Analytics