`

Hibernate基础语义

阅读更多

 

  • Configuration

 

Configuration类负责管理Hibernate的配置信息,Hibernate运行时需要获取一些底层的信息。如:数据库URL,数据库用户,数据库密码,数据库驱动类,数据库适配器等;

当我们调用:

 

new Configuration().configure()

 

 Hibernate会根据当前的CLASSPATH找到hibernate.cfg.xml(Hibernate.properties)并将其加载到内存中,作为后面操作的基础配置;

Configuration类一般只有在获取SessionFactory时需要涉及,当SessionFactory实例创建之后,由于配置的基本信息已经由Hibernate绑定在返回的SessionFactory之中,因此,一般情况下无需再对其进行操作!

 

  • 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

 

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则提供了面向对象的查询模式;

1
3
分享到:
评论

相关推荐

    深入浅出Hibernate中文版 part1

    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的基础,掌握了它们才能灵活应对各种数据持久化场景。 “Hibernate高级特性”章节...

    深入浅出Hibernate中文版 part2

    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基础语义与高级特性 这部分深入探讨了Hibernate的核心概念,如`Configuration`、`SessionFactory`和`Session`等,并介绍了Hibernate的高级特性,包括XDoclet映射、数据检索策略、数据关联管理和数据...

    Hibernate开发指南.pdf

    #### 七、Hibernate基础语义 - **Configuration**: 配置Hibernate的基本设置。 - **SessionFactory**: 创建Session的工厂。 - **Session**: 执行CRUD操作的主要接口。 #### 八、Hibernate高级特性 - **XDoclet与...

    Hibernate开发指南

    - **Hibernate基础语义**: 包括`Configuration`、`SessionFactory`、`Session`等核心概念。 - **Hibernate高级特性**: 如`XDoclet`映射工具的使用、数据检索、HQL查询语言等。 - **数据关联**: 详细讨论了一对一...

    hibernate入门级教程,零基础哟

    #### 六、Hibernate基础语义 - **Configuration类**:负责读取配置文件,并根据这些配置初始化SessionFactory。 - **SessionFactory**:是创建Session的工厂,它是线程安全的,可以被多个线程共享。 - **Session**:...

    夏昕-Hibernate+开发指南.pdf

    - **Hibernate基础语义**:包括Configuration、SessionFactory、Session等概念及其使用方法。 - **Hibernate高级特性**:涵盖了XDoclet与Hibernate映射、数据检索、HQL语言、数据关联等进阶主题。 - **数据访问**...

    Hibernate 开发学习指导书

    #### 六、Hibernate基础语义 - **Configuration**: 负责读取配置文件,初始化SessionFactory。 - **SessionFactory**: 创建Session实例,是线程安全的。 - **Session**: 提供了一组操作数据库的方法,如保存、更新、...

Global site tag (gtag.js) - Google Analytics