Hibernate SessionFactory会话工厂详解

SessionFactory 的核心就是一个“会话工厂”,你可以理解成 Hibernate 的老大哥,专门负责造 Session 的。比较适合放在应用启动的时候初始化一次,整个项目里就用它来统一拿 Session,省事又高效。它还能缓存 SQL 和映射数据,查询快了不止一点点。如果你连着多个数据库,那就每个库配一个 SessionFactory,就像多台车配多个司机,井井有条。

SessionFactory的核心就是一个“会话工厂”,你可以理解成 Hibernate 的老大哥,专门负责造 Session 的。比较适合放在应用启动的时候初始化一次,整个项目里就用它来统一拿 Session,省事又高效。

它还能缓存生成过的 SQL 语句 和映射元数据,嗯,查询快了不止一点点。比如你一个表查多次,底层 SQL 不用每次都重新拼,响应也快。

常见用法也简单,像这样:

SessionFactory sessionFactory = cfg.buildSessionFactory();

不过要注意一点哦,如果你项目里连了多个数据库,就得一库一工厂,别偷懒。否则切库容易出问题,SessionFactory 是线程安全的,但不是全能的。

如果你还不太清楚 Session 是怎么配合使用的,可以看看Session(会话)-hibernate 课件,讲得挺细的。

顺带一提,Hibernate 缓存机制也值得了解一下,和 SessionFactory 关系大;多线程访问 Session 的坑也不少,C# 那边的多线程文章可以当参考,概念是通的。

如果你正在搞缓存优化,Swift 那边的线程安全缓存实现也蛮有意思,思路可以借鉴。

SessionFactory属于 Hibernate 的“定海神针”,用得稳,项目也跟着稳。如果你用 Hibernate,建议好好理解它,再配上合理的缓存策略,事半功倍。

ppt 文件大小:4.94MB