对象关系映射(Object-Relational Mapping, ORM)要解决的核心矛盾是:Java 里是对象与引用,数据库里是表与行,两套世界观怎么对上号。ORM 用一层框架把「对象操作」翻译成「SQL 操作」,让业务代码尽量少碰
ResultSet和字符串 SQL。但没有免费的午餐——翻译得越多,你对 SQL 的控制就越少,这正是选型的核心权衡。
1. 为什么需要 ORM
手写 JDBC 的日子大概长这样:
String sql = "SELECT id, name, age FROM user WHERE id = ?";
try (Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setLong(1, id);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
return new User(rs.getLong("id"), rs.getString("name"), rs.getInt("age"));
}
}
}
2026/10/11大约 3 分钟