zoukankan      html  css  js  c++  java
  • Spring和数据库编程(一)

    1.传统的JDBC代码的弊端

    如果用的好JDBC,其性能是最好的,但是有太多的try…catch…finally语句需要处理,数据库资源的打开、关闭都是定性的,甚至在大部分情况下,只要发生异常数据库的事务就会回滚,否则就提交,二者都是比较固定的模式。在spring没有出来之前,许多开发者在JDBC中滥用try…catch…finally语句,导致代码可读性和可维护性下降,从而引发信任问题。

    2.配置数据库资源

    2.1 使用简单数据库配置

    <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
            <property name="driverClass" value="com.mysql.cj.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://localhost:3306/chapter12" />
            <property name="username" value="root" />
            <property name="password" value="123456abc" />
        </bean>

    这个配置一般用于测试,因为他不是一个数据库连接池,只是一个很简单的数据库连接的应用。

    2.2 使用第三方数据库连接池

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://localhost:3306/chapter12" />
            <property name="username" value="root" />
            <property name="password" value="123456" />
            <!--连接池的最大数据库连接数 -->
            <property name="maxActive" value="255" />
            <!--最大等待连接中的数量 -->
            <property name="maxIdle" value="5" />
            <!--最大等待毫秒数 -->
            <property name="maxWait" value="10000" />
        </bean>

    这样就配置了一个DBCP的数据库连接池了。

    2.3 使用JNDI数据库连接池

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
            <property name="jndiName" value="java:comp/env/jdbc/chapter12" />
        </bean>

    在Tomcat、WebLogic等JavaEE服务器上配置数据源,这是它存在一个JNDI的名称。也可以通过Spring所提供的的JNDI机制获取对应的数据源。


    常用的数据库连接池

    常用的数据库连接池有C3P0,dbcp,druid
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.5.5</version>
    </dependency>
    ------------------------------------
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>
    ------------------------------------
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.21</version>
    </dependency>

    注解配置数据源

    /**
         * 配置数据库
         * @return 数据库连接池
         */
        @Bean(name="dataSource")
        public DataSource initDataSource() {
            if(dataSource!=null) {
                return dataSource;
            }
            Properties props=new Properties();
            props.setProperty("driverClassName", "com.mysql.cj.jdbc.Driver");
            props.setProperty("url","jdbc:mysql://localhost:3306/ssm?useSSL=false&serverTimezone=GMT%2B8");
            props.setProperty("userName","root");
            props.setProperty("password","123456abc");
            props.setProperty("maxActive","20");
            props.setProperty("maxIdle","20");
            props.setProperty("maxWait","30000");
            try {
                dataSource=BasicDataSourceFactory.createDataSource(props);
            }catch(Exception e) {
                e.printStackTrace();
            }
            return dataSource;
        }

    properties文件配置数据源

    dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
    dataSource.driverClass=com.mysql.cj.jdbc.Driver
    dataSource.jdbcUrl=jdbc:mysql://localhost:3306/db_shiro?useSSL=false&serverTimezone=GMT%2B8
    dataSource.user=root
    dataSource.password=123456abc

    xml:
    dataSource.jdbcUrl=jdbc:mysql://localhost:3306/db_shiro?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8

    注意在xml文件中&需要使用转义字符&amp;

  • 相关阅读:
    贪心算法 Wooden Sticks
    HDOJ 2189 悼念512汶川大地震遇难同胞——来生一起走
    hdoj1069 Monkey and Banana(最长上升子序列)
    2012级计科《程序设计基础Ⅱ》期末上机考试
    Constructing Roads In JGShining's Kingdom
    c语言学习随笔之指针(二)
    c语言学习随笔之指针(一)
    遍历网页框架结构
    笔记本测试软件(让奸商头疼的软件)0
    ResizePicturevb.net
  • 原文地址:https://www.cnblogs.com/xc-xinxue/p/12384297.html
Copyright © 2011-2022 走看看