# 使用 TiDB 开发 Java 应用程序的最佳实践

+ 以 Java 为例, 在其他各语言框架下, 也有类似的实现

![left](./student-guide/diagram/data-access-framework.png)

--------------------------------------------------------------

1. Biz Logic 是我们的业务代码。

2. Spring Transaction 使用这个注解的类或者方法表示该类里面的所有方法或者这个方法的事务由spring处理,来保证事务的原子性,即使方法里面对数据库操作,如果失败则spring负责回滚操作,成功则提交操作。

3. Data Access Framework 数据库访问层:又称为DAL层,有时候也称为是持久层,其功能主要是负责数据库的访问。简单地说就是实现对数据表的Select（查询）、Insert（插入）、Update（更新）、Delete（删除）等操作。如果要加入ORM的思想,就会包括对象和数据表之间的映射,以及对象实体的持久化操作。

4. JDBC Java数据库连接,（Java Database Connectivity,简称JDBC）是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
   
DriverManager:负责加载各种不同驱动程序（Driver）,并根据不同的请求,向调用者返回相应的数据库连接（Connection）。Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接（Connection）。Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。Statement:用以执行SQL查询和更新（针对静态SQL语句和单次执行）。PreparedStatement:用以执行包含动态参数的SQL查询和更新（在服务器端编译,允许重复执行以提高效率）。CallableStatement:用以调用数据库中的存储过程。SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况（即错误）。

5. TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着您现有的 MySQL 连接器和客户端都可以继续使用。大多数情况下您现有的应用都可以迁移至 TiDB,无需任何代码修改。

当前 TiDB 服务器官方支持的版本为 MySQL 5.7。大部分 MySQL 运维工具（如 PHPMyAdmin, Navicat, MySQL Workbench 等）,以及备份恢复工具（如 mysqldump, Mydumper/myloader）等都可以直接使用。

