首页 / JAVA / Java基于数据源的数据库访问
Java基于数据源的数据库访问
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基于数据源的数据库访问,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3902字,纯文字阅读大概需要6分钟。
内容图文
组件内容
- 配置文件
在这里,我们是通过 org.apache.commons.dbcp.BasicDataSourceFactory.createDataSource(java.util.Properties prop) 来创建数据源实例,但是要求 Properties 的属性名称要和BasicDataSourceFactory声明的Field的名称相一致。除了jdbc链接的相关配置之外,其他的应该(猜测)都有其默认值,不是必须要配置的。配置文件的内容如下:
driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@dzzx-db1.hnisi.com.cn:1523/zxkfk username=*** password=*** # if you want to change the following config, make sure you konw their meanings, otherwise you should not to change them initialSize=10 maxIdle=3 minIdle=2 maxActive=10 maxWait=10000
各属性的名称,可以参考BasicDataSourceFactory源代码,这里仅对我用到的几个进行介绍:
-
driverClassName
驱动类名称 - url
数据库连接url,不同数据库的写法有所不同 - username
数据库用户名 - password
数据库用户密码 - initialSize
数据源连接池初始连接数 - maxIdle
连接池中允许空闲连接的最大数 - minIdle
连接池中允许空闲连接的最小数 - maxActive
连接池中允许的活动连接的最大数 - maxWait
连接的最长等待时间,单位为毫秒
在上述配置项中,前四个是必要的jdbc连接配置,在jdbc编程中经常遇到;后面五个是数据源连接池相关的配置,根据其介绍,我们可以用一个猜想的场景对其进行不严谨的解释:
按照上述配置,初始情况下会有10个数据库连接(initialSize)
在初始情况下一般不会有数据库访问,即10连接都是空闲的,所以连接会被释放,连接数将减少到3(maxIdle) -- 所以配置时initialSize=maxIdle较好
等到有连接被请求使用了,此时空闲连接数将减少,等少于2(minIdle)时,会创建新的连接
如果业务代码请求连接,10秒(maxWait)还没有获取到,可能会抛出异常
业务代码使用完,释放连接之后,连接池中空闲的连接数会增加,所以将会减少连接,保持maxIdle的限制再次声明,上述的模式只是猜测,没有经过测试。
-
driverClassName
- 创建数据源
我们通过 java.io.InputStream java.lang.Class.getResourceAsStream(String name) 来加载资源文件,获得InputStrInputStreameam实例;通过 void java.util.Properties.load(InputStream inStream) 来加载属性配置到Properties实例;通过 DataSource org.apache.commons.dbcp.BasicDataSourceFactory.createDataSource(Properties prop) 来获取数据源实例。
Properties prop = new Properties(); InputStream is = SendUtil.class.getResourceAsStream("/cn/sinobest/jzpt/jgbm/common/message/sendMessage.properties"); prop.load(is); DataSource ds = BasicDataSourceFactory.createDataSource(prop);
当然,也可以不用工厂模式,以普通的方式创建数据源:BasicDataSource bds = new BasicDataSource(); bds.setDriverClassName("oracle.jdbc.driver.OracleDriver"); bds.setUrl("jdbc:oracle:thin:@dzzx-db1.hnisi.com.cn:1523/zxkfk"); bds.setUsername("***"); bds.setPassword("***"); bds.setInitialSize(10); bds.setMaxIdle(3); bds.setMinIdle(2); bds.setMaxActive(10); bds.setMaxWait(10 * 1000);
- 访问数据库
我比较喜欢使用 org.springframework.jdbc.core.JdbcTemplate 这个工具类,他对增删改查都有封装,支持批处理;没有特殊的语法,写过jdbc代码的可以很容易过渡。我们只需要对其提供数据源实例,由他负责数据库连接的获取和释放,我们只管提供sql语句、参数和参数类型,其他的都不用我们操心。我的使用样例如下:
String sql = "insert into S_SMS_WAITING_LIST (systemid,receiver,msg_content,senttime) values(?, ?, ?, ?)" String systemid="1"; String phone="159********"; String content="您有一条短信"; String currtime=new Timestamp(System.currentTimeMillis()); Object[] args = {systemid, phone, content, currtime}; int[] argTypes = {Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP}; JdbcTemplate jdbcTem = new JdbcTemplate(ds); // 上一步创建的数据源 jdbcTem.update(sql, args, argTypes);
更多JdbcTemplate的方法,请查询相关API。
2015-08-19 19:42:02
Java基于数据源的数据库访问
标签:
本文系统来源:http://www.cnblogs.com/ywjy/p/4743003.html
内容总结
以上是互联网集市为您收集整理的Java基于数据源的数据库访问全部内容,希望文章能够帮你解决Java基于数据源的数据库访问所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。