EJB2.1分为实体Bean,会话Bean,消息驱动Bean,实体Bean解决持久层,即数据库与对象的关系映射,会话Bean解决业务逻辑,消息驱动Bean我还不清楚,主要是以事件驱动来调用的,类似JSF中的基于事件模型驱动. HIBERNATE主要是解决持久层,类似与EJB的实体Bean,但感觉如果要深入掌握,也不容易. EJB3.0中实体Bean已经被淘汰了,只有会话Bean,消息驱动Bean,因为实体Bean这一块已经被HIBERNATE所抢占. Spring 没有学过,不太清楚,好像是解决持久层与业务逻辑层这一块的一个框架,就像Struts是解决业务逻辑与界面层这一块的一个框架一样.