`
yang2617
  • 浏览: 28524 次
社区版块
存档分类
最新评论

hibernate的核心接口

    博客分类:
  • java
阅读更多
使用hibernate框架,就必须了解hibernate的核心接口.hibernate的核心接口有5个.分别是Configuration,SessionFactory,Session,Query和Criteria,Transaction.本文重点介绍Session接口以及Query和Criteria接口.
1.·Configuration接口

Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

2.SessionFactory接口

SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。在一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

3.Session接口

Session接口负责与数据库交流,里面包含了很多常见的sql语句.需要注意的是,hibernate的Session和web中的HttpSession是两个完全不同的概念.下面列举一些hibernate中 Session的常用方法.
返回类型         |方法名                    |方法概述
Connection     connection()            获得JDBC连接.
Connection     close()                 通过断开JDBC连接结束Session.
Criteria       createCriteria(Class)   为给定的实体类创建一个新的查询实例.
Query          createQuery(String)     根据字符串创建一个新的查询实例.
Query          createSqlQuery(String)  根据sql语句查询.
void           save(Object)            添加.
void           delete(Object)          删除.
void           update(Object)          修改.
List           find(String)            查询.
Object         get(Class,id)           根据主键查询.
Session接口的常用方法还有很多,这里不一一介绍.

4.Query和Criteria接口.

Query和Criteria接口负责执行各种复杂的数据库查询,尅使用sql语句和Hql语言两种方式.

  a.Criteria.Criteria提供了add(Criterion)方法来添加查询条件,Criterion可以通过 Restrictions 工具类来创建.Restrictions提供了大量的静态方法.如eq(等于),ge(大于),between等.下面写个简单的例子来说明Criteria的创建和应用.
	public User getUser(String name, String password) {
		Criteria c = getSession().createCriteria(User.class);
		c.add(Restrictions.eq("name", name));
		c.add(Restrictions.eq("password", password));
		return (User) c.uniqueResult();
	}

根据用户名和密码来查询User,返回唯一结果.
  b.Query.Query是查询的意思.所谓的HQl就是Hibernate Query  Language.它提供了比Criteria更加丰富和灵活的查询特性.HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。同样写个例子.
	@SuppressWarnings("unchecked")
	public List<Menu> getMenusByRole(long roleid) {
		String hql = "Select m From Menu m,Role r,RoleMenu rm where r.id =rm.roleid and rm.menuid = m.id and r.id=" + roleid;
		Query q = getSession().createQuery(hql);
		return q.list();
	}


根据用户的id查出相应的菜单列表.其中涉及到了角色表,菜单表以及角色和菜单的关系表.这里主要为了说明Query的创建和使用HQl查询,具体细节不作介绍.还可以直接使用sql语句查询.如下:
	 @SuppressWarnings("unchecked")
	 public List<Menu> getMenusByRole(long roleid) {
	 String sql =
	 "Select menu.* From menu,role,role_menu rm where role.id =rm.roleid and rm.menuid = menu.id and role.id="
	 + roleid;
	 Query q = getSession().createSQLQuery(sql);
	 List<Object[]> objs = q.list();
	
	 List<Menu> menus = new ArrayList<Menu>();
	
	 for (Object[] os : objs) {
	 Menu menu = new Menu();
	 menu.setId(tranfer(os[0]));
	 menu.setPid(tranfer(os[1]));
	 menu.setPos(tranfer(os[4]));
	 menu.setTitle((String) os[2]);
	 menu.setLink((String) os[3]);
	 menus.add(menu);
	 }
	 return menus;
	 }
	
	 /**
	 * bigInteger 转换成long
	 */
	 private Long tranfer(Object o) {
	 BigInteger bi = (BigInteger) o;
	 return bi.longValue();
	 }


使用sql语句查询的时候,得到的是一个Object数组,如果是多条记录,则返回一个Object数组的List,要进行相应的类型转换.所以推荐使用HQL方式查询.
实际上HQl能做的不仅仅是查询,还包括实体的更新和删除.举个例子.要删除关系表中某个角色对应的所有菜单.
	public void delete(long roleid) {
		Query query = getSession().createQuery("delete RoleMenu where roleid=" + roleid);
		query.executeUpdate();
	}



5.Transaction接口

Transaction接口负责事务相关的操作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。 关于事务这里不作过多介绍.
分享到:
评论

相关推荐

    Hibernate核心接口

    "Hibernate核心接口" Hibernate 是一种流行的 Java 持久化框架,它提供了多种核心接口来实现数据的持久化操作。这些核心接口是 Hibernate 的基础组件,任何 Hibernate 应用程序都需要使用它们。下面将详细介绍这五...

    T21.2_Hibernate核心接口与类 java 经典教程 经典教材

    T21.2_Hibernate核心接口与类 java 经典教程 经典教材

    Hibernate教程03_Hibernate核心开发接口介绍

    以上就是Hibernate核心开发接口的简要介绍。在实际开发中,通过熟练掌握这些接口和概念,我们可以高效地利用Hibernate进行数据库操作,降低系统的耦合度,提升开发效率。通过阅读给出的源码s2sh_Hibernate03_CoreAPI...

    hibernate中五个核心接口

    ### Hibernate中的五个核心接口 #### 一、概述 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互过程。通过将 Java 对象映射到数据库表中,Hibernate 提供了一种更加...

    Hibernate核心类和接口的详细介绍

    Hibernate核心接口是Hibernate框架的核心组件,负责将Java对象与数据库表进行映射。这些核心接口包括: * org.hibernate.SessionFactory:提供了对数据库连接的接口,用于创建数据库连接。 * org.hibernate.cfg....

    Hibernate的五个核心接口介绍.png

    Hibernate的五个核心接口 Configuration SessionFactory Session Transcation Query和Criteria

    hibernate核心jar包

    **标题:“Hibernate核心jar包”** 在Java世界中,Hibernate是一个流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的交互转化为简单的API调用。核心jar包是Hibernate框架的基础,...

    hibernate主要知识点

    ### Hibernate 核心接口 #### Configuration Configuration 接口负责读取配置文件(如 `hibernate.cfg.xml` 或 `hibernate.properties`),并管理 Hibernate 的配置信息,包括数据库连接信息、Dialect、JDBC 驱动...

    hibernate_first_new项目源码

    1. Hibernate核心接口: - Session:这是与数据库进行交互的主要接口,它封装了SQL的执行,提供对象的保存、更新、删除和查询等操作。 - Transaction:处理数据库事务,保证数据的一致性和完整性。在Hibernate中,...

    hibernate3学习总结

    1. **Hibernate 核心接口**: - **Configuration** 接口:配置 Hibernate,初始化设置,并创建SessionFactory对象。它是配置和启动 Hibernate 的起点。 - **SessionFactory** 接口:作为数据存储源的代理,负责...

    hibernate核心代码

    下面将详细讲解Hibernate的核心代码及其相关知识点。 1. **配置文件**: Hibernate的核心配置文件是`hibernate.cfg.xml`,其中包含了数据库连接信息、方言设置、缓存配置等。例如: ```xml &lt;hibernate-...

    Hibernate 文档.doc

    #### Hibernate核心接口 1. **Session接口** Session接口是执行持久化对象的CRUD(Create, Retrieve, Update, Delete)操作的主要工具。它负责与数据库的交互,执行SQL语句,但需注意,Session对象并非线程安全,...

    Hibernate 核心类库

    《Hibernate核心类库详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层数据存储。本篇文章将详细探讨`hibernate-release-...

    hibernate 核心技术

    【hibernate核心技术】主要涉及的是Java开发中的两个重要框架:Struts和Hibernate。这两个框架在企业级应用开发中有着广泛的应用,它们分别是MVC(Model-View-Controller)架构模式中的控制器和持久层解决方案。 ...

    Hibernate框架 jar 架包 开发详解

    Hibernate 简介 Hibernate 开发流程 Hibernate 配置文件 Hibernate 核心接口和类 Hibernate ORM映射 HQL Hibernate 懒加载机制与抓取策略 Hibernate 缓存 Hibernate 锁机制

    Hibernate3.1中文参考手册

    11. **API参考**:提供Hibernate核心接口和类的详细文档,方便开发者查阅和学习。 这份中文参考手册是开发者深入理解并有效利用Hibernate3.1的关键工具,无论是初学者还是经验丰富的开发者,都能从中获得宝贵的指导...

    Hibernate核心思想与接口简介

    Hibernate核心思想与接口简介 Hibernate 是一个采用 ORM 机制的开源框架,核心思想是将表与表之间的操作,映射成对象和对象之间的操作,这样简化了持久层的代码,减轻了程序员的负担。ORM 是一种为了解决面向对象与...

Global site tag (gtag.js) - Google Analytics