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. 基本使用步骤
- 定义Repository接口
public interface UserRepository extends Repository<User, Long> {
List<User> findByLastname(String lastname);
}
- 配置Spring
<jpa:repositories
base-package="com.zhutougg.jpa"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager"/>
- 使用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