
1、加大Java可使的内存量、单次提交的条数再扩大些、扩大java连接数据库最大连接数都可以从量上来解决这个问题,但是想质的解决这样做是不好的。
2、用存储过程,来解决大量数据的CRUD是最明智的选择。写个存储过程,把数据一千条或几条的传给存储过程,由存储过程去解析,然后CRUD就能从本质上解决这个问题了。
这也是为何电信运营商的数据库应中,都是大量的存储过程即pl/sql的原因了。
tomcat连接池的方法
1:连接池所要解决的问题:
应用程序每一次与数据库的连接都会由于网络传输和执行数据库查询而严重降低了程序的执行效率,因此我们需要用到连接池将将我们经常要用到的数据保存在连接池中,这样就减少了网络传输和因查询而给程序执行效率带来的影响。
2:连接池的本质:用一个集合保存查询出来的数据。
3:连接池的实现原理:
我们要使用Connect pool,首先要做的是访问datasource(所有的要访问的数据都放在这里面)。datasource数据源是通过LDAP(light directory access protocal)软件进行管理的(其本质就是将数据源以树状结构进行存储,这样的话,方便查询(树状结构的查询效率是最快的),java通过JNDI(java naming directory interface)访问LDAP里面的数据。
4:在tomcat种配置连接池:
1)打开tomcat目录下的conf/contextcfg:在里面加入如下配置
Xml代码
<Resource driverClassName="oraclejdbcdriverOracleDriver"url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxActive="20" type="javaxsqlDataSource" author="Container" name="ds"></Resource>
<Resource driverClassName="oraclejdbcdriverOracleDriver"url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxActive="20" type="javaxsqlDataSource" author="Container" name="ds"></Resource>
其中:maxActive:代表的是要配置的最大连接数。
type:资源类型
2)通过应用程序执行上述连接:
Java代码
<%@page contentType="text/html" %>
<%@page import="javasql"%>
<%@page import="javaxsql"%>
<%@page import="javaxnaming"%>
<html>
<body>
<% Context ctx=new InitialContext();
DataSource ds=(DataSource)ctxlookup("java:comp/env/ds");//必须要
Connection con=dsgetConnection();
outprintln("<h1>connection succeeful</h1>");
conclose();
%>
</body>
</html>
<%@page contentType="text/html" %>
<%@page import="javasql"%>
<%@page import="javaxsql"%>
<%@page import="javaxnaming"%>
<html>
<body>
<% Context ctx=new InitialContext();
DataSource ds=(DataSource)ctxlookup("java:comp/env/ds");//必须要
Connection con=dsgetConnection();
outprintln("<h1>connection succeeful</h1>");
conclose();
%>
</body>
</html>
connclose():连接池是被覆盖了的,本质上的含义,把连接池借过来的连接还回去。
从零开始学java web 开发书上的例子
以sql server 2005为例,讲解tomcat60上的配置。
下载sqljdbcjar放在tomcat的lib目录,tomcat/conf/contextxml文件,<Context></Context>中加入配置代码。
<Resource name="jdbc/dbplling" author="Container" type="javaxsqlDataSource" driverClassName="commicrosoftsqlserverdriverjdbcsqlserverdriverDriver"url="jdbc:sqlserver//127001:1433;databasename=testdemo" username="sa" password="123" maxActive="100" maxIdle="30"; maxWait="5000"></Resource>
webxml
<xml version="10" encoding="UTF-8">
<web-app version="24" xmlns=">
这个是用配置文件连接数据库的例子,原理和xml一样,需要你解析文件。供你参考:
dbproperties文件内容(以oracle为例)
#驱动:
driver=oraclejdbc
#地址:
url=jdbc:oracle:thin:@172160212:1521:orcl
#用户名:
user=1234
#密码:
password=1234
#初始连接数:
initialSize=10
-------------------------------------------
代码:
publicclassDBUtils{
privatestaticStringdriver=null;
privatestaticStringurl=null;
privatestaticStringuser=null;
privatestaticStringpassword=null;
privatestaticds;
static{
//读取程序外的properties文件
//需要properties文件的包路径
Propertiesprops=newProperties();
try{
Stringpath="utils/dbproperties";//路径根据你自己的实际情况
propsload(DBUtilsclass()(path));
//properties对象getProperty("字符串")
driver=propsgetProperty("driver");
url=propsgetProperty("url");
user=propsgetProperty("user");
password=propsgetProperty("password");
ds=new();
ds(driver);
dssetUrl(url);
dssetUsername(user);
dssetPassword(password);
ds(IntegerparseInt(propsgetProperty("initialSize")));
ClassforName(driver);
}catch(Exceptione){
e();
}
}
publicstaticConnection()
throws{
Connectionconn=null;
if(ds!=null)conn=ds();
returnconn;
}
publicstaticvoid(Connectionconn)throwsException{
if(conn!=null)connclose();
}
publicstaticvoidmain(String[]args)throws{
DBUtilsdb=newDBUtils();
db();
}
}
DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有BoneCP快)。
以上就是关于java 数据库插入超大数据怎么处理全部的内容,包括:java 数据库插入超大数据怎么处理、java 因为数据库反复的连接是很耗资源的,所以用连接池比较好、javaCS程序(java开发cs项目)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)