知识卡片
SessionFactory与Session的职责划分
内容
ORM框架里通常存在两层不同生命周期的对象:一个代价高昂、线程安全、整个应用只需一个实 例的”工厂”(如SessionFactory),负责持有配置和映射元数据;以及大量廉价、非线程安全、 生命周期极短的”会话”对象(如Session),负责具体一次数据库交互。工厂对象应该在应用启 动时创建一次并全局共享,会话对象则应该按需创建、用完即关,且绝不能跨线程共享。发散: 这个”重量级单例工厂 + 轻量级一次性会话”的分层模式在很多框架里反复出现(如JDBC连接池 的DataSource vs Connection),本质上是把”配置解析的一次性成本”和”每次交互的运行时状 态”分离开,避免每次操作都重新解析配置。
参考来源
《精通Hibernate》第3章《创建持久化对象》