java中建立数据库连接池,有哪几个步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中建立数据库连接池,有哪几个步骤相关的知识,希望对你有一定的参考价值。

我要怎么 建立数据库连接池,还有建这个连接池要不要配置xml文件

配置包括3步:1.让tomcat容器启动创建数据库连接池2.在某个项目中关联数据库连接池,3.取得数据库连接池并使用。使用包括,当拿到数据库连接后,可以通过2种方式来使用,1.使用jstl的标签,2.封装成返回connection的方法。

1.让tomcat容器启动创建数据库连接池:
配置的地方很多,根据不同的需求配置在不同的位置,但原理就一个,就是要配置一个Context标签下有一个resource标签。
a.在Tomcat 6.0\conf\Catalina\localhost目录下新建一个跟项目名一样的*.xml文件

b.数据源设置的名字(JNDI) auth:表示数据源由谁管理,这儿是tomcat容器本身 type:类型

c.驱动设置,该驱动放在tomcat的lib下或者放在该站点的lib下设置连接数据库字符串,url设置连接数据库的用户名设置数据库连接的密码-->

2.在某个项目中关联数据库连接池,在web.xml添加代码:
<!--关联jndi数据库连接池 -->
3.使用jstl标签测试数据源是否配置成功
4.在jsp中通过java代码测试:
5.封装成bean对外提供得到数据库连接池连接的方式:
参考技术A Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/"+projectName);这里的projectName指的是你的项目名称然后在tomcatde 的\conf\Catalina\localhost目录下配置一个和你项目名称相同的xml文件文件的配置方法可以去百度下很多的,这样就可以使用连接池了。
参考技术B 看这里: http://www.blogjava.net/chunkyo/archive/2007/03/23/105687.html

数据库索引有哪几种?怎样建立索引?

参考技术A

    种类:

1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;

    非唯一索引:

create index 索引名 on 表名(列名) tablespace 表空间名;

    唯一索引:

建立主键或者唯一约束时会自动在对应的列上建立唯一索引;

2、索引列的个数:单列索引和复合索引;

3、按照索引列的物理组织方式。

    索引的创建格式: 

CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>     ON <schema>.<table_name>     (<column_name> | <expression> ASC | DESC,      <column_name> | <expression> ASC | DESC,...)     TABLESPACE <tablespace_name>     STORAGE <storage_settings>     LOGGING | NOLOGGING     COMPUTE STATISTICS     NOCOMPRESS | COMPRESS<nn>     NOSORT | REVERSE     PARTITION | GLOBAL PARTITION<partition_setting>

使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况

使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。

在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:

一、B树索引:

最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:

可以保证无论用户要搜索哪个分支的叶子结点,都需要经过相同的索引层次,即都需要相同的I/O次数。

B树索引的创建示例:

create index ind_t on t1(id) ;

注1:索引的针对字段创建的,相同字段不能创建一个以上的索引;

注2:默认的索引是不唯一的,但是也可以加上unique,表示该索引的字段上没有重复值(定义unique约束时会自动创建);

注3:创建主键时,默认在主键上创建了B树索引,因此不能再在主键上创建索引。

二、位图索引:

有些字段中使用B树索引的效率仍然不高,例如性别的字段中,只有“男、女”两个值,则即便使用了B树索引,在进行检索时也将返回接近一半的记录。

所以当字段的基数很低时,需要使用位图索引。(“低”的标准是取值数量 < 行数*1%)

位图索引的逻辑结构如上图所示:索引中不再记录rowid和键值,而是将每个值作为一列,用0和1表示该行是否等于该键值(0表示否;1表示是)。其中位图索引的行顺序与原表的行顺序一致,可以在查询数据的过程中对应计算出行的原始物理位置。

位图索引的创建示例:

create bitmap index ind_t on t1(type);

注:位图索引不可能是唯一索引,也不能进行键值压缩。

三、反向键索引:

考虑这个情况:某一字段的值是1-1000顺序排列,建立B树索引后依旧递增,到后来该B数索引不断在后面增加分支,会形成如下如的不对称树:

反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

反向键索引的创建示例:

create index ind_t on t1(id) reverse;

注:键的反转由系统自行完成。对于用户是透明的。

四、基于函数的索引:

有的时候,需要进行如下查询:select * from t1 where to_char(date,'yyyy')>'2007';

但是即便在date字段上建立了索引,还是不得不进行全表扫描。在这种情况下,可以使用基于函数的索引。其创建语法如下:

create index ind_t on t1(to_char(date,'yyyy'));

注:简单来说,基于函数的索引,就是将查询要用到的表达式作为索引项。

五、全局索引和局部索引:

这个索引貌似很复杂,其实很简单。总得来说一句话,就是无论怎么分区,都是为了方便管理。

具体索引和表的关系有三种:

1、局部分区索引:分区索引和分区表1对1

2、全局分区索引:分区索引和分区表N对N

3、全局非分区索引:非分区索引和分区表1对N

创建示例:

首先创建一个分区表

create table student

(

stuno number(5),

sname vrvhar2(10),

deptno number(5)

)

partition by hash (deptno)

(

partition part_01 tablespace A1,

partition part_02 tablespace A2

);

创建局部分区索引(1v1):

create index ind_t on student(stuno)

local(

partition part_01 tablespace A2,

partition part_02 tablespace A1

); --local后面可以不加

创建全局分区索引(NvN):

create index ind_t on student(stuno)

global partition by range(stuno)

(

partition p1 values less than(1000) tablespace A1,

partition p2 values less than(maxvalue) tablespace A2

); --只可以进行range分区

创建全局非分区索引(1vN)

create index ind_t on student(stuno) GLOBAL;

根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是??

以上是关于java中建立数据库连接池,有哪几个步骤的主要内容,如果未能解决你的问题,请参考以下文章

常见的tcp拥塞控制有哪几种算法

Java开发常用的几个数据库连接池

Java -- 每日一问:Java并发类库提供的线程池有哪几种? 分别有什么特点?

mysql有关权限的表都有哪几个

JAVA JDBC 数据库连接池

Java -- JDBC 学习--数据库连接池