Hibernate 的起源:一次宿醉后的固执编码
来源:fishbowl.pastiche.org — 2026-10-23
📋 概述
作者回忆二十五年前在 IBM 合作伙伴 Cirrus 的经历。当时服务端 Java 被 EJB 折磨得苦不堪言:写一个 EJB 要两个接口、一个不实现这两个接口的实现类,再加厂商专属的部署描述符。墨尔本办公室的 Gavin King 一直想用 Smalltalk 的思路做一个持久化框架,但管理层只肯妥协到部分弃用 EJB。第二天宿醉的 Gavin 在 CRT 前把最早几个类敲了下来,几个月后 Hibernate 以 LGPL 发布,根包名还是 cirrus.inf。
🔑 核心要点
- Hibernate 1.0 的根包名是 cirrus.inf,inf 是 infrastructure 的缩写
- EJB 的荒谬程度:写两个接口,再写一个不实现这两个接口的实现类,还要厂商专属部署描述符
- Cirrus 十五个人里有四个叫 David,比公司的女性员工还多三个
- 那场会议的三种意见:管理层维持 EJB,多数开发者想部分弃用,Gavin 想整个替换成自己的持久化框架
- 管理层只批了第二方案,第二天宿醉的 Gavin 独自把最早几个类敲完,几个月后 Hibernate 以 LGPL 发布
💡 金句
Gavin had that dangerous combination of being disturbingly intelligent, with absolute conviction of his own opinions, and annoyingly, was often right.
👍 0
👎 0
← 返回 Lobsters 首页