181
Q: #10.2.1 | JNDI是什么
A: Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI),是Java的一个目录服务应用程序界面(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。
182
Q: #10.2.2-1 | 常用的数据库连接池有哪些
A:
183
Q: #10.2.2-2 | bean的方式配置连接池
A:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" p:driverClassName="org.h2.Driver" p:url="jdbc:h2:tcp://localhost/~/spitter" p:username="sa" p:password="" p:initialSize="5" p:maxActive="10" />
184
Q: #10.2.2-3 | Java的方式配置连接池
A:
@Beanpublic BasicDataSource dataSource() { BasicDataSource ds = new BasicDataSource(); ds.setDriverClassName("org.h2.Driver"); ds.setUrl("jdbc:h2:tcp://localhost/~/spitter"); ds.setUsername("sa"); ds.setPassword(""); ds.setInitialSize(5); ds.setMaxActive(10); return ds;}
185
Q: #10.2.2-4 | BasicDataSource的池配置属性
A:
186
Q: #10.2.3-1 | 在Spring中,通过JDBC驱动定义数据源是最简单的配置方式。Spring提供了三个这样的数据源类(均位于org.springframework.jdbc.datasource包中)供选择:
A:
187
Q: #10.2.3-2 | 推荐使用数据库连接池的原因
A: 因为SingleConnectionDataSource有且只有一个数据库连接,所以不适合用于多线程的应用程序,最好只在测试的时候使用。而DriverManagerDataSource和SimpleDriverDataSource尽管支持多线程,但是在每次请求连接的时候都会创建新连接,这是以性能为代价的。鉴于以上的这些限制,我强烈建议应该使用数据源连接池。
188
Q: #10.2.5-1 | 借助Spring的profile特性能够在运行时选择数据源
A:
package com.habuma.spittrconfigimport org.apache commons.dbep.BasicDataSource;import javax.sql.DataSource;import org.springframework context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework context.annotation.Profile;import org.springframework.jdbcdatasource embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc..embedded.EmbeddedData; import org.springframework.jndi.UndiobjectFactoryBean;
@Configurationpublic class DataSourceConfiguration @Profile("development")//开发数据源 @Bean public Datasource embeddedDataSource (){ return new EmbeddedDatabaseBuilder () .setType(EmbeddedDatabaseType.H2) .adscript("classpath:schema.sql") .adsCript("classpath:test-data.sql") .build(); }
@Profile("qa")//QA数据源 @Bean public DataSource Data(){ BasicDataSource ds new BasicDatas() ds.setDriverclassName("org.h2.Driver"): ds.setUrl("jdbc: h2: tcp: ///~/spitter"); ds.setUsername("sa"); ds.setPassword(""); ds.setInitialsize(5); ds.setMaxActive(10); return ds; }
@Profile("production")//生产环境数据源 @Bean public DataSource dataSource(){ JndiobjectFactoryBean jndiobjectFactoryBean = new JndiobjectFactoryBean(); jindiobjectFactoryBean.setJndiName("jdbc/SpittrDS"); jindiobjectFactoryBean.setResourceR(true); jindiobjectFactoryBean.setProxyInter(javax.sql.DataSource.class); return(Datasource)jindiobjectFactoryBean.getobject(); }}
189
Q: #10.2.5-2 | 借助XML配置,基于profile选择数据源
A:
<?xml version="1. 0" encoding="UTF-8"?> <beans xmlns="http: //www.spr org/schema/beans" xmIns: xsi="http://www.w3.org/2001/XMLSchema-instance" xmins: jdbe="http: //www. springfrar, org/schema/jabe" xmIns: jee="http: //www.springfram, org/schema/jee" xmins: p="http: //www. springfram. org/schema/p" xsi: schemaLocation="http: //www.springframework. org/schema/jdbc http: //www. springframework. org/scher/jdbc/spring-jdbc-31.xsd http: //www.springframework.org/schema/jee http: //www.springframework. org/schema/jee/spring-jee-3.1.xsd http: //www. springframework. org/:/beans http: //www.springframework. org/schema/beans/spring-beansxsd"> <beans profiledevelopment><!-- 开发数据源 --> <jdbc: embedded-database id="datasource"type="H2"> <jdbc: script location="com/hab uma/spitter/db/jdbc/schema.sql"/> <jdbc: script location="com/habum a/spitter/ab/jdbc/test-data. sql"/> </jdbc: embedded-database> </beans> <beans profile="ga"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" p:driverclassName="org.h2.Driver" p:url="jdbc:h2:tcp://localhost~/spitter" p:username="sa" p:password="" p:initialsize="5" p:maxActive="10"/> </beans> <beans profile="production"> <jee:jndi-lookup id="datasource" jndi-name="/jdbc/SpitterDS" resource-ref="true"/> </beans></beans>
190
Q: #11-1 | Spring对ORM框架的支持提供了与这些框架的集成点以及一些附加的服务
A: