JAVA中常见数据库操作API
字数 1379 2025-08-29 08:31:47

Java中常见数据库操作API详解

一、JDBC常用API

1. DriverManager

用于管理JDBC驱动的服务类,主要功能是获取Connection对象。

核心方法

public static Connection getConnection(String url, String user, String password) throws SQLException

2. Connection

代表数据库连接对象,每个Connection代表一个物理连接会话。

核心方法

Statement createStatement() throws SQLException;
PreparedStatement prepareStatement(String sql) throws SQLException;
CallableStatement prepareCall(String sql) throws SQLException;

事务控制方法

Savepoint setSavepoint() throws SQLException;
Savepoint setSavepoint(String name) throws SQLException;
void setTransactionIsolation(int level) throws SQLException;
void rollback() throws SQLException;
void rollback(Savepoint savepoint) throws SQLException;
void setAutoCommit(boolean autoCommit) throws SQLException;
void commit() throws SQLException;

3. Statement

用于执行SQL语句的工具接口,可执行DDL、DCL、DML语句和SQL查询。

核心方法

ResultSet executeQuery(String sql) throws SQLException;
int executeUpdate(String sql) throws SQLException;
boolean execute(String sql) throws SQLException;

4. PreparedStatement

预编译的Statement对象,比Statement更高效安全。

核心方法

void setXxx(int parameterIndex, Xxx value);

二、Hibernate框架常用API

1. Configuration

负责Hibernate的配置信息。

初始化方式

// 属性文件
Configuration cfg = new Configuration();

// XML文件
Configuration cfg = new Configuration().configure();

2. SessionFactory

保存当前数据库配置信息、所有映射关系和预定义SQL语句。

核心方法

SessionFactory configuration.buildSessionFactory()
Session sessionFactory.openSession()

3. Session

应用程序与数据库交互的单线程对象,相当于JDBC的Connection。

获取持久化对象方法

public Object get(Class clazz, Serializable id);
public Object load(Class clazz, Serializable id);

区别

  • get()立即发出SQL语句,返回持久化对象;load()返回代理对象,延迟加载
  • 查询不存在数据时,get()返回null,load()抛出异常

CRUD操作

Serializable save(Object object);
void update(Object object);
void delete(Object object);
void saveOrUpdate(Object object);
Query createQuery(String hql);
SQLQuery createSQLQuery(String sql);
Transaction beginTransaction();

4. Transaction

数据库事务管理。

核心方法

void commit();
void rollback();
boolean wasCommitted();

5. Query

执行HQL查询。

核心方法

Query setxxx();
List list();
Object uniqueResult();
int executeUpdate();

6. Criteria

提供面向对象的查询方式。

三、Spring JDBC常用API

1. JdbcTemplate

Spring对JDBC最低级别的封装。

核心方法

void execute(String sql);  // 执行DDL
int update(String sql);    // 执行DML
int[] batchUpdate(String sql);
int[] batchUpdate(String sql,BatchPreparedStatementSetter pss);
queryForxxxxx(String sql);
Map<String,Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters);

2. NamedParameterJdbcTemplate

基于命名参数的使用方式。

示例

String sql = "INSERT INTO student(id,student_name,email,Dept_No) VALUES(:id,:name,:email,:deptid)";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id",9);
paramMap.put("name","Limbo");
paramMap.put("email","1610770854@qq.com");
paramMap.put("deptid",1);
namedParameterJdbcTemplate.update(sql,paramMap);

四、MyBatis常用API

1. SqlSessionFactory

单个数据库映射关系的内存镜像。

初始化方式

InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

核心方法

SqlSession openSession();
SqlSession openSession(Connection connection);

2. SqlSession

应用程序与持久层交互的单线程对象。

核心方法

void commit();
int delete(String statement);
int delete(String statement, Object parameter);
int insert(String statement);
int insert(String statement, Object parameter);
<T> T selectOne(String statement);
<T> T selectOne(String statement, Object parameter);
<E> List<E> selectList(String statement);
<E> List<E> selectList(String statement, Object parameter);
<T> T getMapper(Class<T> type);

五、Spring Data JPA

1. 基本使用步骤

  1. 定义Repository接口
public interface UserRepository extends Repository<User, Long> {
    List<User> findByLastname(String lastname);
}
  1. 配置Spring
<jpa:repositories 
    base-package="com.zhutougg.jpa" 
    entity-manager-factory-ref="entityManagerFactory" 
    transaction-manager-ref="transactionManager"/>
  1. 使用Repository
@Autowired
private UserRepository repository;

public void doSomething() {
    User u = new User();
    User user = repository.save(u);
}

2. Repository

Spring Data的核心接口。

定义方式

// 方式1
public interface UserDao extends Repository<User, Long> { ... }

// 方式2
@RepositoryDefinition(domainClass = User.class, idClass = Long.class)
public interface UserDao { ... }

六、API对比与选择建议

API类型 适用场景 优点 缺点
JDBC 简单SQL操作,需要精细控制 性能高,控制精细 代码冗余,需手动管理资源
Hibernate 复杂对象关系映射 ORM强大,开发效率高 学习曲线陡峭,性能调优复杂
Spring JDBC Spring项目中的简单数据库操作 简化JDBC,自动资源管理 功能相对简单
MyBatis SQL需要精细控制的项目 SQL灵活,性能好 需编写更多SQL
Spring Data JPA 快速开发,简单CRUD 开发效率极高 复杂查询支持有限

选择建议

  • 简单项目:Spring JDBC或MyBatis
  • 复杂对象关系:Hibernate
  • 快速开发:Spring Data JPA
  • 需要精细SQL控制:MyBatis或JDBC
Java中常见数据库操作API详解 一、JDBC常用API 1. DriverManager 用于管理JDBC驱动的服务类,主要功能是获取Connection对象。 核心方法 : 2. Connection 代表数据库连接对象,每个Connection代表一个物理连接会话。 核心方法 : 事务控制方法 : 3. Statement 用于执行SQL语句的工具接口,可执行DDL、DCL、DML语句和SQL查询。 核心方法 : 4. PreparedStatement 预编译的Statement对象,比Statement更高效安全。 核心方法 : 二、Hibernate框架常用API 1. Configuration 负责Hibernate的配置信息。 初始化方式 : 2. SessionFactory 保存当前数据库配置信息、所有映射关系和预定义SQL语句。 核心方法 : 3. Session 应用程序与数据库交互的单线程对象,相当于JDBC的Connection。 获取持久化对象方法 : 区别 : get()立即发出SQL语句,返回持久化对象;load()返回代理对象,延迟加载 查询不存在数据时,get()返回null,load()抛出异常 CRUD操作 : 4. Transaction 数据库事务管理。 核心方法 : 5. Query 执行HQL查询。 核心方法 : 6. Criteria 提供面向对象的查询方式。 三、Spring JDBC常用API 1. JdbcTemplate Spring对JDBC最低级别的封装。 核心方法 : 2. NamedParameterJdbcTemplate 基于命名参数的使用方式。 示例 : 四、MyBatis常用API 1. SqlSessionFactory 单个数据库映射关系的内存镜像。 初始化方式 : 核心方法 : 2. SqlSession 应用程序与持久层交互的单线程对象。 核心方法 : 五、Spring Data JPA 1. 基本使用步骤 定义Repository接口 配置Spring 使用Repository 2. Repository Spring Data的核心接口。 定义方式 : 六、API对比与选择建议 | API类型 | 适用场景 | 优点 | 缺点 | |---------|---------|------|------| | JDBC | 简单SQL操作,需要精细控制 | 性能高,控制精细 | 代码冗余,需手动管理资源 | | Hibernate | 复杂对象关系映射 | ORM强大,开发效率高 | 学习曲线陡峭,性能调优复杂 | | Spring JDBC | Spring项目中的简单数据库操作 | 简化JDBC,自动资源管理 | 功能相对简单 | | MyBatis | SQL需要精细控制的项目 | SQL灵活,性能好 | 需编写更多SQL | | Spring Data JPA | 快速开发,简单CRUD | 开发效率极高 | 复杂查询支持有限 | 选择建议 : 简单项目:Spring JDBC或MyBatis 复杂对象关系:Hibernate 快速开发:Spring Data JPA 需要精细SQL控制:MyBatis或JDBC