插入数据是一项很简单的操作,但一旦提高了数据量,就变得不那么容易。
最近项目中使用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;
}
});
}
分享到:
相关推荐
总的来说,SSH+Oracle整合涉及了多个层面的技术,包括前端的MVC框架、业务逻辑的管理、数据持久化和数据库交互,以及数据的展示和处理。这种整合模式为开发大型、复杂的企业级应用提供了坚实的基础。
在这个场景下,"SSH+ORACLE好用分页"意味着我们将SSH框架与Oracle数据库结合,实现了高效的数据分页功能。 数据分页是Web应用中常见的需求,特别是在处理大量数据时,分页可以提高用户体验,避免一次性加载过多数据...
总的来说,"SSH+Oracle通用分页"是Java Web开发中常见的需求,它涉及到SSH框架的集成使用和Oracle数据库的高效查询策略。理解并熟练掌握这些知识,对于开发高性能、用户体验良好的Web应用至关重要。在实际项目中,还...
SSH+Oracle企业费用办公管理系统是一种基于Java开发的高效能、安全的企业级应用,它整合了Struts、Spring和Hibernate三个框架,与Oracle数据库相结合,为企业提供了一套完整的费用管理和办公自动化解决方案。...
在“ssh+oracle分页”这个主题中,我们将深入探讨如何利用这三个框架与Oracle数据库进行集成,并实现数据的分页显示。 1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。...
在IT行业中,构建高效、动态的Web应用是关键任务之一,而"ajax+jQuery+ssh+oracle级联实例"提供了一个具体的实现方案。这个实例涵盖了前端到后端的关键技术,包括异步数据交互(Ajax)、JavaScript库(jQuery)、...
【SSH+Oracle 整合详解】 SSH(Struts2、Spring、Hibernate)是Java开发中常用的三大开源框架,它们各自负责Web应用的不同层面:Struts2处理MVC模式中的Controller部分,Spring作为整体的IoC(Inversion of Control...
在"SSH+Oracle增删查改"的主题中,我们将探讨如何在SSH框架下使用Oracle数据库进行数据的插入、更新、删除和查询操作。 **1. Struts2** Struts2是MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求和...
SSH+Oracle OA管理系统是一个专为新手设计的综合型管理平台,它结合了Spring、Struts2和Hibernate(SSH)三大主流Java开发框架,以及Oracle数据库技术,为用户提供了一个功能全面的办公自动化(OA)解决方案。...
【Java SSH Oracle SQLServer 学习笔记】 Java是一种广泛使用的面向对象的编程语言,它以其跨平台、开源和丰富的库而闻名。SSH是三个开源框架的缩写,分别是Spring、Struts和Hibernate,它们在Java Web开发中起着至...
【SSH+Oracle+MyEclipse框架搭建详解】 SSH框架,由Struts、Spring和Hibernate三个开源框架组成,常用于构建企业级的Java Web应用程序。在MyEclipse6.5环境中,我们将结合Oracle数据库来搭建一个登录框架。以下是...
【标题】"javaweb图书管理系统jsp+SSH+oracle"是一个基于JavaWeb技术,结合SSH框架(Struts2、Spring、Hibernate)与Oracle数据库开发的图书管理应用。这个项目展示了如何将这些技术有效地整合在一起,实现一个完整...
【SSH+Oracle上传图片】项目详解 在Java Web开发中,SSH(Struts2、Spring、Hibernate)框架常用于构建企业级应用。本项目重点在于如何通过SSH框架将图片数据存储到Oracle数据库的Blob列中。以下是实现这一功能的...
【描述】:这个“java+ssh+oracle”移动小项目为初学者提供了一个实践平台,旨在帮助他们学习如何将这些技术有效地整合在一起。项目的核心是使用Java语言作为后端开发语言,通过SSH框架实现业务逻辑和数据访问层的...
在这个ssh+oracle的例子中,可能包含一个或多个Action类,每个类对应一个特定的用户操作,比如添加数据的Action。 Hibernate作为ORM框架,简化了Java应用程序与数据库的交互。它通过映射Java对象到数据库表,可以将...
SSH+Oracle所需全部包指的是在Java开发中,用于Spring、Struts和Hibernate(简称SSH)三大框架整合,并且能够与Oracle数据库进行交互的所有必要库文件。这些库文件通常包括JAR包,它们提供了各种功能,使得开发者...
【标题】"java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)" 涉及的核心技术是Java Web开发中的几个关键组件,包括ExtJS 2.0前端框架,Spring、Struts2和Hibernate(SSH)后端框架,Oracle 10g数据库以及Lucene ...
是上一个BBS项目的升级版 使用的技术 jquery-1.8.3 spring2.5 struts-2.1.8 hibernate-3.3.2. Oracle 练习项目 分享下, 注释有不少. 带有sql
标题“ssh+oracle”指的是在Java开发环境中,使用Spring、Struts和Hibernate(SSH)框架与Oracle数据库进行集成的应用示例。这个项目可能是为了教学或实际工作中的参考,旨在帮助初学者理解如何将这些技术有效地结合...
ssh+jdbc+oracle所有依赖包(commons-pool2-2.8.0.jar,commons-collections-3.2.2.jar,commons-dbcp2-2.7.0.jar,ojdbc8.jar)