Spring配置数据源的方式

1、spring配置数据库的几种方式:jdbc,jdni,连接池

2、jdbc与odbc的区别

3、orm类型数据库步骤


jdbc创建数据库连接

    在java中创建数据库连接最简单的方法是使用jdbc方式,只要有基本的Java基础与数据库知识就可完成。基本配置方式可参见如下代码清单:

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/alibaba";
String user = "root";
String password = "11111111";
Connection conn =  DriverManager.getConnection(url , user , password);
    在Spring中可通过Spring配置文件完成数据库配置,代码清单如下所示:
	<bean id="dataSource"   
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">   
		<property name="driverClassName">   
		<value>com.mysql.jdbc.Driver</value>   
		</property>   
		<property name="url">   
		<value>jdbc:mysql://localhost:3306/hibernate</value>   
		</property>   
		<property name="username">
		<value>root</value>   
		</property>   
		<property name="password">   
		<value>11111111</value>   
		</property>   
	</bean>   
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
    </bean>
xml文件中主要定义两个bean,第一个是数据源bean,主要配置数据库的驱动类、访问地址、用户与密码,主要配置参数与在代码中直接创建数据库连接没有差别。第二个实例jdbcTemplate是Spring提供的可以通过jdbc访问数据库的封装类,内部引用实例dataSource。代码中使用过程如下:
ApplicationContext context = new ClassPathXmlApplicationContext("datasource.xml");
JdbcTemplate jdbc = (JdbcTemplate) context.getBean("jdbcTemplate");
String sql = "select * from myuser";
List list = jdbc.queryForList(sql);
   这两个使用方式本质上没有什么区别,只是数据访问参数配置地点不同,都具有应用程序与数据库之间耦合性高的特点。程序员要明确知道数据库的类型、数据库名称、用户名和密码才能进行开发。这样在部署时对于数据库的种类和参数就不可在更改。如在部署时,需要更换为Oracle数据库或者用户名与密码,必须对应用程序进行修改。此中方法在开发中配置较简单,可提高工作效率,但部署时应尽量避免。

   JDNI创建数据库连接

    相对于JDBC创建连接方式,JDNI方式降低了应用程序与数据库之间的耦合性。在部署web服务时,不需要更改系统代码,便可修改数据库访问参数。主要方式通过在tomcat目录的context.xml文件中创建数据源,再在应用程序中通过JDNI方式得到访问该数据源,完成数据库访问。此种方法可以在应用部署后,动态的修改context.xml文件来修改访问数据库的参数,而程序员则完全不用关系数据库的相关信息。

   操作步骤首先是在Tomcat的context.xml的context元素中键入数据源定义:

  <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" name="jdbc/myDataBase" password="password" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/hibernate" username="name"/>
   定义好数据源后,要在应用中引用,引用方式是通过在web.xml配置信息,将数据源引用到本web应用下。引用方式是在web.xml中加入如下信息:

<resource-ref>
<res-ref-name>jdbc/myDataBase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
  在以上步骤的支持下,Java应用中就可以自由使用这个数据源了。使用方式如下所示:

	Context ctx=new InitialContext();
	DataSource source = (DataSource)ctx.lookup("java:comp/env/jdbc/myDataBase");
        Connection conn = (Connection)source.getConnection();

数据库连接池

         数据库连接池就以c3p0为例,其中有很多的参数可以配置,配置代码如下:

<bean id="dataSource"   
		class="com.mchange.v2.c3p0.ComboPooledDataSource">   
		<property name="driverClass">   
		<value>com.mysql.jdbc.Driver</value>   
		</property>   
		<property name="jdbcUrl">   
		<value>jdbc:mysql://localhost:3306/hibernate</value>   
		</property>   
		<property name="user">
		<value>root</value>   
		</property>   
		<property name="password">   
		<value>11111111</value>   
		</property>   		      
		<property name="minPoolSize">
                <value>5</value>
                </property>
                <property name="maxPoolSize">
                <value>30</value>
                </property>
		<property name="initialPoolSize">
                <value>10</value>
                </property>
                <property name="maxIdleTime">
                <value>60</value>
                </property>
	</bean>   
jdbc与odbc的区别。

    在讨论连接数据库的方式时,时常会有jdbc与odbc两种选择。由于spring主要针对java平台,因此在spring中主要使用jdbc连接方式,但为何不选用odbc呢。因此在这把这两种方式的主要区别进行下解释:

    odbc即是Open DataBase Connectivity(开放数据接口),是微软开放服务中有关数据库的一部分。它建立一种访问数据库的规范,内部提供了访问数据库的C语言Api。

    jdbc是Java DataBase Connectivity ,是sun公司创建的标准,它主要提供了Java访问数据的接口与类。

   因此它们的主要区别主要有一下几点:

    1)jdbc主要针对java编程,odbc主要针对C编程

    2)odbc保留了指针的使用,而java最大的优势在于淘汰比较麻烦的指针操作。因此若在java平台上使用Odbc访问数据库,势必对属性,类的健壮性,安全性,移植性带来影响。

    3)使用odbc访问数据库,必须在每台客户机上安装手动安装驱动管理程序与驱动程序。而jdbc驱动器使用java语言编写,因此jdbc驱动器可以在任何具有java平台的计算机上都可自动安装,而且是安全的,可移植的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值