SessionFactory 和 Session
SessionFactory ==> 等价于 DriverManager, 只需要一个.
SessionFactory 负责创建 Session 实例。可以通过 Configuation 实例构建
SessionFactory :
SessionFactory sessionFactory = config.buildSessionFactory();
Configuration 实例config 会根据当前的配置信息,构造 SessionFactory 实例并返回。
SessionFactory 一旦构造完毕,即被赋予特定的配置信息。也就是说,之后 config 的任
何变更将不会影响到已经创建的 SessionFactory 实例(sessionFactory )。如果需要
使用基于改动后的 config 实例的 SessionFactory,需要从 config 重新构建一个
SessionFactory 实例。
Session ==> 等价于 JDBC中的 Connection
Session 实例通过 SessionFactory 实例构建:
Session session = sessi onFactory.openSession();
完整示例代码:
// 0. 加载配置和驱动等, 生成 Session 工厂(相当于连接池或者 DriverManager)
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
// 1. 打开 session
Session session = sessionFactory.openSession();
// 2. 打开事务(Transaction)
org.hibernate.Transaction tran = session.beginTransaction();
// 3. 生成实体类
User bean = new User();
// 4. 给 bean 赋值
bean.setUsername("zhangsan");
// 5. 保存或者更新(并没有立即保存到数据)
session.save(bean);
// 6. 提交事务(真正的保存或者更新数据)
tran.commit();
// 7. 做查询, 首先创建查询对象
String queryString = "from User";// HSQL 操作的是实体, 不是数据库表格
Query query = getSession().createQuery(queryString);
// 8. 读取查询结果
java.util.List<User> result = query.list();
SessionFactory ==> 等价于 DriverManager, 只需要一个.
SessionFactory 负责创建 Session 实例。可以通过 Configuation 实例构建
SessionFactory :
SessionFactory sessionFactory = config.buildSessionFactory();
Configuration 实例config 会根据当前的配置信息,构造 SessionFactory 实例并返回。
SessionFactory 一旦构造完毕,即被赋予特定的配置信息。也就是说,之后 config 的任
何变更将不会影响到已经创建的 SessionFactory 实例(sessionFactory )。如果需要
使用基于改动后的 config 实例的 SessionFactory,需要从 config 重新构建一个
SessionFactory 实例。
Session ==> 等价于 JDBC中的 Connection
Session 实例通过 SessionFactory 实例构建:
Session session = sessi onFactory.openSession();
完整示例代码:
// 0. 加载配置和驱动等, 生成 Session 工厂(相当于连接池或者 DriverManager)
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
// 1. 打开 session
Session session = sessionFactory.openSession();
// 2. 打开事务(Transaction)
org.hibernate.Transaction tran = session.beginTransaction();
// 3. 生成实体类
User bean = new User();
// 4. 给 bean 赋值
bean.setUsername("zhangsan");
// 5. 保存或者更新(并没有立即保存到数据)
session.save(bean);
// 6. 提交事务(真正的保存或者更新数据)
tran.commit();
// 7. 做查询, 首先创建查询对象
String queryString = "from User";// HSQL 操作的是实体, 不是数据库表格
Query query = getSession().createQuery(queryString);
// 8. 读取查询结果
java.util.List<User> result = query.list();