码迷,mamicode.com
首页 > 数据库 > 详细

使用Spring 和 JDBC 来操作数据 (持续更新中)

时间:2015-05-26 12:53:12      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

说明,使用Spring4, 采用 Java Configuration.

<一> 配置数据源 之五种方式

1. 使用 JNDI 的数据源(jndi data source)

代码如下:

@Bean
public JndiObjectFactoryBean dataSource() {
    JndiObjectFactoryBean jndiObjectFB = new JndiObjectFactoryBean();
    jndiObjectFB.setJndiName("jdbc/XXXDS");
    jndiObjectFB.setResourceRef(true);
    jndiObjectFB.setProxyInterface(javax.sql.DataSource.class);
    return jndiObjectFB;
}

说明,这是利用JndiObjectFactoryBean 从JNDI 中查找DataSource

2.使用数据源池(data source pool)

@Bean
public BasicDataSource dataSource() {
    BasicDataSource ds = new BasicDataSource();
    ds.setDriverClassName("org.h2.Driver");
    ds.setUrl("jdbc:h2:tcp://localhost/~/XXX");
    ds.setUsername("sa");
    ds.setPassword("");
    ds.setInitialSize(5);
    ds.setMaxActive(10);
    return ds;
}

driverclassname、url、username以及password 是BasicDataSource 配置的基本元素。

其它的还有:initialSize、maxActive、maxIdle、maxOpenPreparedStatements、maxWait、minEvictableIdleTimeMillis、minIdle、poolPreparedStatements。

3. 使用基于JDBC 驱动的数据源(jdbc driver-base data source)

有三个JDBC data source class:DriverManagerDataSource、SimpleDriverDataSource和SingleConnectionDataSource

举个例子,配置DriverManagerDataSource:

@Bean
public DataSource dataSource() {
    DriverManagerDataSource ds = new DriverManagerDataSource();
    ds.setDriverClassName("org.h2.Driver");
    ds.setUrl("jdbc:h2:tcp://localhost/~/XXX");
    ds.setUsername("sa");
    ds.setPassword("");
    return ds;
}

说明,由于这个datasource ,在每次请求时,都会创建一个新的连接,从而牺牲了性能。所以,在生产环境中,尽量要使用数据源池的方式。

4.使用嵌入的数据源(embedded data source)

相当于内存数据库,在开发和测试时,比较有用。

举例:

@Bean
public DataSource dataSource() {
    return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("classpath:schema.sql")
        .addScript("classpath:test-data.sql")
        .build();
}

说明,H2 要加在classpath中。

5. 使用 profiles 来选择数据源,

举例:

@Configuration
public class DataSourceConfiguration {
    @Profile("development")
    @Bean
    public DataSource embeddedDataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .addScript("classpath:schema.sql")
            .addScript("classpath:test-data.sql")
            .build();
    }
    
    @Profile("qa")
    @Bean
    public DataSource Data() {
    // ......
    }

说明:在启动的时候,指明哪个profile 是 active 的。


<二> 在Spring 中使用JDBC

1.Spring 提供了三种JDBC 的模板

  • JdbcTemplate

  • NameParameterJdbcTemplate

  • SimpleJdbcTemplate

2. JDBC 模板的操作

通过@Bean,将DataSource 赋给JDBCTemplate,就可以使用这些模板。

举例:

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

通过将JDBC 的Template 注入进Repository 即可使用。即在ComponentScan 的时候,创建了该模板。举例:

@Repository
public class JdbcSpitterRepository implements SpitterRepository {
    private JdbcOperations jdbcOperations;

    @Inject
    public JdbcSpitterRepository(JdbcOperations jdbcOperations) {
        this.jdbcOperations = jdbcOperations;
    }
    ...
}

剩下的就是使用该模板进行CRUD 操作。

使用Spring 和 JDBC 来操作数据 (持续更新中)

标签:

原文地址:http://my.oschina.net/pingjiangyetan/blog/420005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!