使用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 是一种流行的 Java 持久化框架,它提供了多种核心接口来实现数据的持久化操作。这些核心接口是 Hibernate 的基础组件,任何 Hibernate 应用程序都需要使用它们。下面将详细介绍这五...
T21.2_Hibernate核心接口与类 java 经典教程 经典教材
以上就是Hibernate核心开发接口的简要介绍。在实际开发中,通过熟练掌握这些接口和概念,我们可以高效地利用Hibernate进行数据库操作,降低系统的耦合度,提升开发效率。通过阅读给出的源码s2sh_Hibernate03_CoreAPI...
### Hibernate中的五个核心接口 #### 一、概述 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互过程。通过将 Java 对象映射到数据库表中,Hibernate 提供了一种更加...
Hibernate核心接口是Hibernate框架的核心组件,负责将Java对象与数据库表进行映射。这些核心接口包括: * org.hibernate.SessionFactory:提供了对数据库连接的接口,用于创建数据库连接。 * org.hibernate.cfg....
Hibernate的五个核心接口 Configuration SessionFactory Session Transcation Query和Criteria
**标题:“Hibernate核心jar包”** 在Java世界中,Hibernate是一个流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的交互转化为简单的API调用。核心jar包是Hibernate框架的基础,...
### Hibernate 核心接口 #### Configuration Configuration 接口负责读取配置文件(如 `hibernate.cfg.xml` 或 `hibernate.properties`),并管理 Hibernate 的配置信息,包括数据库连接信息、Dialect、JDBC 驱动...
1. Hibernate核心接口: - Session:这是与数据库进行交互的主要接口,它封装了SQL的执行,提供对象的保存、更新、删除和查询等操作。 - Transaction:处理数据库事务,保证数据的一致性和完整性。在Hibernate中,...
下面将详细讲解Hibernate的核心代码及其相关知识点。 1. **配置文件**: Hibernate的核心配置文件是`hibernate.cfg.xml`,其中包含了数据库连接信息、方言设置、缓存配置等。例如: ```xml <hibernate-...
#### Hibernate核心接口 1. **Session接口** Session接口是执行持久化对象的CRUD(Create, Retrieve, Update, Delete)操作的主要工具。它负责与数据库的交互,执行SQL语句,但需注意,Session对象并非线程安全,...
《Hibernate核心类库详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层数据存储。本篇文章将详细探讨`hibernate-release-...
【hibernate核心技术】主要涉及的是Java开发中的两个重要框架:Struts和Hibernate。这两个框架在企业级应用开发中有着广泛的应用,它们分别是MVC(Model-View-Controller)架构模式中的控制器和持久层解决方案。 ...
Hibernate 简介 Hibernate 开发流程 Hibernate 配置文件 Hibernate 核心接口和类 Hibernate ORM映射 HQL Hibernate 懒加载机制与抓取策略 Hibernate 缓存 Hibernate 锁机制
七、Hibernate核心接口 1. `Configuration`接口: - 提供了管理配置信息的方法,用于创建`SessionFactory`。 - 主要方法`buildSessionFactory()`用于生成SessionFactory实例。 2. `SessionFactory`接口: - 管理...
11. **API参考**:提供Hibernate核心接口和类的详细文档,方便开发者查阅和学习。 这份中文参考手册是开发者深入理解并有效利用Hibernate3.1的关键工具,无论是初学者还是经验丰富的开发者,都能从中获得宝贵的指导...