Configuration类负责管理Hibernate的配置信息,Hibernate运行时需要获取一些底层的信息。如:数据库URL,数据库用户,数据库密码,数据库驱动类,数据库适配器等;
当我们调用:
new Configuration().configure()
Hibernate会根据当前的CLASSPATH找到hibernate.cfg.xml(Hibernate.properties)并将其加载到内存中,作为后面操作的基础配置;
Configuration类一般只有在获取SessionFactory时需要涉及,当SessionFactory实例创建之后,由于配置的基本信息已经由Hibernate绑定在返回的SessionFactory之中,因此,一般情况下无需再对其进行操作!
SessionFactory负责创建session实例,可以通过Configuration实例构建SessionFactory:
new Configuration().configure().buildSessionFactory()
Configuration实例会根据当前数据库配置信息,构造SessionFactory实例并返回,SessionFactory一旦构造完毕,即被赋予特定的配置信息;之后的Configuration实例对象不会影响到已经创建的SessionFactory实例!
如果需要改变SessionFactory实例,就需要从Configuration实例重新构建一个SessionFactory实例,同理,如果应用中需要访问多个数据库,那么针对每个数据库都应该建立想对应的SessionFactory实例;
SessionFactory中保存着数据库配置的所有映射关系,同时也负责维护当前的二级缓存和StatementPool,由此可见,SessionFactory的创建过程会很复杂且代价高昂,所有我们在系统设计中应充分的考虑到SessionFactory的重用策略,SessionFactory采用了线程安全设计,可由多个线程并发调用,大多数情况下,一个应用中针对一个数据库共享一个SessionFactory就可以;
Session是Hibernate持久化操作的基础,Hibernate的Session与Web中的HttpSession并没有任何关系,Hibernate Session之与Hibernate就像JDBC Connection与JDBC之间的关系;
Session是Hibernate持久化管理器的核心,通过了很多持久化方法,我们可以根据这些方法完成对象的增删改查(CRUD);
Save():
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Tuser tUser = new Tuser();
tUser.setName("keith");
session.save(tUser);
session.getTransaction().commit();
输出的SQL:
Hibernate: insert into tUser(uName) values(?)
Get():
Tuser tUser = (Tuser) session.get(Tuser.class, 1);
输出的SQL:
Hibernate:
select tuser0_.uId as uId0_0_, tuser0_.uName as uName0_0_ from tUser tuser0_ where tuser0_.uId=?
Delete():
Tuser tUser = (Tuser) session.get(Tuser.class, 1);
session.delete(tUser);
输出的SQL:
Hibernate: select tuser0_.uId as uId0_0_,tuser0_.uName as uName0_0_ from tUser tuser0_ where tuser0_.uId=?
Hibernate: delete from tUser where uId=?
删除的操作还采用HQL方式:
String hql = "delete Tuser where id = 2";
Query query = session.createQuery(hql);
query.executeUpdate();
输出的SQL:
Hibernate: delete from tUser where uId=2
Hibernate3中我们必须通过Query或Criteia接口进行数据查询:
Query接口:
String hql = "from Tuser where uName like ?";
Query query = session.createQuery(hql);
query.setParameter(0, "keith");
List list = query.list();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Tuser tUser = (Tuser) iterator.next();
System.out.println(tUser.getuName()+" "+tUser.getuId());
}
输出SQL:
Hibernate: select tuser0_.uId as uId0_,tuser0_.uName as uName0_ from tUser tuser0_ where tuser0_.uName like ?
输出结果: keith 3
Criteria接口:
Criteria criteria = session.createCriteria(Tuser.class);
criteria.add(Expression.eq("uName", "keith"));
List list = criteria.list();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Tuser tUser = (Tuser) iterator.next();
System.out.println(tUser.getuName()+" "+tUser.getuId());
}
输出SQL:
Hibernate: select this_.uId as uId0_0_,this_.uName as uName0_0_ from tUser this_ where this_.uName=?
输出结果:keith 3
Query和Criteria作为Hibernate数据查询接口,都提供了对查询条件的封装机制,两者之间的不同之处在于:Query面向HQL和Native SQL,而Criteria则提供了面向对象的查询模式;
分享到:
相关推荐
4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 4.7 自定义持久化实现 第5章 Hibernate高级特性 5.1 Hibernate持久化实现 5.2 Hibernate...
“Hibernate基础语义”深入介绍了Configuration、SessionFactory、Session等核心组件的作用和用法。这些概念是理解和使用Hibernate的基础,掌握了它们才能灵活应对各种数据持久化场景。 “Hibernate高级特性”章节...
4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 4.7 自定义持久化实现 第5章 Hibernate高级特性 5.1 Hibernate持久化实现 5.2 Hibernate...
#### Hibernate基础语义与高级特性 这部分深入探讨了Hibernate的核心概念,如`Configuration`、`SessionFactory`和`Session`等,并介绍了Hibernate的高级特性,包括XDoclet映射、数据检索策略、数据关联管理和数据...
#### 七、Hibernate基础语义 - **Configuration**: 配置Hibernate的基本设置。 - **SessionFactory**: 创建Session的工厂。 - **Session**: 执行CRUD操作的主要接口。 #### 八、Hibernate高级特性 - **XDoclet与...
- **Hibernate基础语义**: 包括`Configuration`、`SessionFactory`、`Session`等核心概念。 - **Hibernate高级特性**: 如`XDoclet`映射工具的使用、数据检索、HQL查询语言等。 - **数据关联**: 详细讨论了一对一...
#### 六、Hibernate基础语义 - **Configuration类**:负责读取配置文件,并根据这些配置初始化SessionFactory。 - **SessionFactory**:是创建Session的工厂,它是线程安全的,可以被多个线程共享。 - **Session**:...
- **Hibernate基础语义**:包括Configuration、SessionFactory、Session等概念及其使用方法。 - **Hibernate高级特性**:涵盖了XDoclet与Hibernate映射、数据检索、HQL语言、数据关联等进阶主题。 - **数据访问**...
#### 六、Hibernate基础语义 - **Configuration**: 负责读取配置文件,初始化SessionFactory。 - **SessionFactory**: 创建Session实例,是线程安全的。 - **Session**: 提供了一组操作数据库的方法,如保存、更新、...