一、总览
使用Spring管理持久层,不管说JPA、Hibernate、JDBC Template...,都需要配置一个数据源的引用。Spring提供了在Spring上下文中配置数据源Bean的多种方式,包括:
1、通过JDBC驱动程序定义的数据源;
2、通过JNDI查找的数据源;
3、连接池的数据源;
对于生产环境的应用程序,应首选 JNDI,连接池次之。
二、配置详解
1、使用JNDI数据源
Spring应用程序经常部署在JAVA EE应用服务器中,如WebPhere、JBoss、WebLogic或者像Tomcat这样的Servlet容器。这些服务器支持配置通过 JNDI 获取数据源。这种配置的好处在于数据源完全可以在应用程序之外进行管理,这样应用程序在需要访问数据库的时候查找数据源就可以了。另,在应用服务器中管理的数据源通常以池的方式组织,从而具备更好的性能,并且至此和系统管理员对其进行热切换。
利用Spring,我们可以像使用Spring Bean 那样配置JNDI中数据源的引用并且将其装配到所需的类中。配置如下:
其中 jndi-name 属性指定JNDI中资源的名称。如果只设置了jndi-name属性,那么就会根据指定的名称查找数据源。但是,如果应用程序运行在JAVA应用程序服务器中,则需要将resource-ref属性设置为true,这样给定的jndi-name将会自动添加java:comp/env/前缀。
2、使用数据源连接池
尽管Spring并没有提供数据源连接的具体实现,但 Apache's Jakarta Commons DBCP或 C3P0 提供了不错的选择。
DBCP包含了多个提供连接池功能的数据源,其中BasicDataSource是最常用的,因为它易于在Spring中配置。
当然也可以使用C3P0配置如下
3、使用JDBC驱动数据源
在Spring中,通过JDBC驱动定义数据源是最简单的配置方式。Spring提供了几种数据源对象(位于org.springframework.jdbc.datasource包中)供选择。这几个数据源对象都没有提供连接池功能,所以没有可配置的池相关属性。