📅  最后修改于: 2023-12-03 15:16:39.181000             🧑  作者: Mango
JDBC(Java Database Connectivity)是Java语言访问关系数据库的标准规范,它提供了一套完整的API,提供了Java应用程序与关系型数据库连接、查询、更新等操作的能力。
JDBC需要手动编写SQL语句,并通过ResultSet对象将数据存储到Java对象中。以下是JDBC代码片段示例:
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 编写SQL语句
String sql = "SELECT * FROM users WHERE age > ?";
// 创建PreparedStatement对象
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setInt(1, 18);
// 执行查询操作
rs = pstmt.executeQuery();
// 遍历ResultSet对象
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + " " + name + " " + age);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接、释放资源
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
Hibernate是一个开源的对象关系映射(ORM)框架,它为Java应用程序提供了对象与关系数据库间映射的支持,使得Java程序员可以更加面向对象地访问关系数据库。Hibernate可以自动生成SQL语句和执行查询操作,同时还提供了其他的特性,例如:缓存、延迟加载、事务处理等。
Hibernate让我们不必了解底层数据访问层的实现细节,只需要定义好Java对象之间的映射关系,Hibernate就可以自动将对象持久化到关系数据库中,或者从数据库中加载出对象并实例化。以下是Hibernate代码片段示例:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
try {
// 开启事务
session.beginTransaction();
// 查询User对象集合
List<User> userList = session.createQuery("from User where age > :age")
.setParameter("age", 18)
.getResultList();
// 遍历User对象集合
for (User user : userList) {
System.out.println(user.getId() + " " + user.getName() + " " + user.getAge());
}
// 提交事务
session.getTransaction().commit();
} catch (Exception e) {
// 回滚事务
session.getTransaction().rollback();
} finally {
// 关闭Session
if (session.isOpen()) {
session.close();
}
// 关闭SessionFactory
if (!sessionFactory.isClosed()) {
sessionFactory.close();
}
}
JDBC和Hibernate都可以实现Java应用程序与关系型数据库的交互,但它们在以下方面有所不同:
总之,JDBC适合于简单的数据库操作,或者在特定的场景下使用,Hibernate则适合于复杂的数据库操作,或者需要高性能、高可靠性的情况下使用。