数据库

数据库开发

JDBC

针对不同的数据库,使用JAVA程序进行连接时会需要针对不同的数据库的接口进行编程;学习,开发成本相对较高。而JDBC就是针对这个问题提出的方案,其向用户提供了一套统一的API接口。

JDBC连接的体系架构:

JDBC体系架构分为两层。上层API层,下层数据库驱动层。上层的API层集成到JDK中了,下层的数据库驱动层一般由各大数据厂商实现,需要到数据库厂商官网下载。推荐使用maven进行管理。

JDBC API

JDBC API提供了以下接口和类:

  • DriverManager: 这个类管理数据库驱动程序的列表。内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。

  • Driver: 此接口处理与数据库服务器通信。很少直接与驱动程序对象。相反,使用DriverManager中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息

  • Connection : 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过唯一的连接对象。

  • Statement : 可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。

  • ResultSet: 这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,让您可以通过移动它的数据。

  • SQLException: 这个类处理发生在一个数据库应用程序的任何错误

JDBC中的API可以在下面中查询:
http://docs.oracle.com/javase/7/docs/api/
中的Package java.sql中查阅。

步骤

  • 装载驱动程序
  • 建立数据库连接
  • 执行SQL语句
  • 获取执行结果
  • 清理环境
    注意 异常管理

高级技术
游标提供了一种客户端读取部分服务端结果集的机制。其主要应对的业务场景可能是用户查询的结果集太大,导致通信量,以及服务器性能的损失。
游标的使用:略。

数据库连接池

数据库的连接池相当于一组jar包,其负责对于连接的创建,管理,销毁,和限流的作用。

连接池.png

连接池一般使用DBCP实现的。 参见:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi

SQL注入和防范

SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

基本的防范可以使用PreparedStatement来实现。

事务

事务时并发控制的基本单元,指作为单个逻辑工作单元的一系列操作。
事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。

MyBatis

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

使用方法和配置参考:
http://www.mybatis.org/mybatis-3/zh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇...
    程序熊大阅读 12,849评论 1 31
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,167评论 0 4
  • MySQL数据库对象与应用 2.1-MySQL数据类型 库建立好之后基本不动,和我们接触最频繁的是表. 建表就是声...
    极客圈阅读 6,502评论 0 8
  • 怀着平和的心情感恩宇宙赐予我的一切,不再抱怨遇着的不快之事,因为我知道,那是我曾经种下的坏种子爆发,我接纳已经发生...
    liuxiaorui阅读 1,216评论 0 0
  • 在巴士站等我。10分钟后我过来接你。 再不见你,要疯了。 我要疯狂吻你。 不再跟你要什么答案,不再试探你的什么想法...
    不知所起不知所终阅读 1,103评论 0 0

友情链接更多精彩内容