使用内连接(hql)
from Product p inner join Category (错误)
from Product p inner join p.category
或者:
String hql = "select p from Product p,Category c where p.category=c";
String hql = "select p from Product p,Category c where p.category.id=c.id";
使用criteria
Criteria crit = session.createCriteria(Product.class).createCriteria("category");
List<Product> list = crit.list();
使用左外连接
hql="select c from Category c left outer join c.products order by c.id";
QBC实现左外连接
Criteria criteria = session.createCriteria(Category.class).setFetchMode("products",FetchMode.JOIN);
使用右外连接(方言使用9,9i不支持)
hql="select c from Category c right outer join c.products ";
使用迫切内连接(在join后面加fetch即可,左右外一样)
hql="select c from Category c join fetch c.products ";
命名的hql
在配置文件(.hbm.xml)中加入
<query name="com.selectGuest">
<![CDATA[select gb from GuestBook gb where gb.id between :begin and :end]]>
</query>,注意这段话加在class外面
程序中使用: Query query = session.getNamedQuery("com.selectGuest");
query.setInteger("begin",1);
query.setInteger("end",100);
命名的sql
<sql-query name="com.selectGuest">
<![CDATA[select {gb.*} from guestBook gb where gb.id =:id]]>
<return alias="gb" class="com.v512.Guestbook" />
</sql-query>,注意这段话加在class外面
调用存储过程Oracle
<sql-query name="com.selectGuest" callable="true">
<return alias="Guestbook" class="com.v512.Guestbook" />
{call selectGuestbookById(?,:id)}
</sql-query>,注意这段话加在class外面
使用SQL查询
String sql="select * from guestbook";
SQLQuery sqlQuery = session.createSQLQuery(sql);
List<Object[]> list = sqlQuery.list();
或者sqlQuery.addScalar("id",Hibernate.INTEGER);
sqlQuery.addScalar("name",Hibernate.STRING);
sqlQuery.addScalar("email",Hibernate.String); //(注意,这儿是字段)
List<Object[]> list = sqlQuery.list();
或者sqlQuery.addEntity(Guestbook.class);
List<GuestBook> list = sqlQuery.list();
或者
String sql= "select {p.*} from product p,category c where p.category_id=c.id";
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.addEntity("p",Product.class);
或者
sqlQuery.setResultTransformer(Transformers.aliasToBean(Product.class));
hibernater 不支持直接更新或删除的存储过程
Hibernate 中直接使用JDBC
Connection conn = session.connection();
String procedure ="{ call updateGuestbookById(?,?)}";
try{
CallableStatement stmt = conn.prepareCall(procedure );
stmt.setInt(1,1);
stmt.setString(2,"修改了主题");
stmt.executeUpdate();
}catch(Exception e){}
分享到:
相关推荐
本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和数据库文件。 首先,让我们了解什么是存储过程和函数。存储过程是预编译的SQL语句集合,可以接受参数、...
4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...
在Struts2中,可以通过拦截器或ActionContext来传递页码和每页条目数等参数,然后在存储过程中使用相应的SQL语句(如`ROWNUM`,`FETCH FIRST`或`OFFSET`)进行分页查询。 在`TestSSH3`这个文件中,可能包含了完整的...
总之,Hibernate不仅支持简单的ORM操作,还提供了调用存储过程和定义命名SQL查询的能力,使得开发者可以灵活地处理各种数据库交互需求,提高代码的灵活性和可维护性。在实际开发中,理解并熟练掌握这些特性,将有助...
本文将详细介绍如何使用Hibernate连接Oracle 11g Release 2(11R2)数据库。 首先,要实现Hibernate与Oracle的连接,我们需要完成以下几个步骤: 1. **环境准备**:确保已安装JDK、Oracle 11g数据库以及相应的...
【hibernate 连接 oracle 数据库】 一、Hibernate 概述 Hibernate 是一个流行的 Java 对象关系映射(ORM)框架,它提供了一种在 Java 应用程序中管理和操作关系数据库的方法。ORM 技术的核心思想是将面向对象的模型...
2. 创建`hibernate.cfg.xml`配置文件,并设置Oracle连接信息。 3. 定义你的实体类并创建相应的映射文件,或者使用属性注解。 4. 初始化`SessionFactory`,并在需要时创建`Session`对象。 5. 使用`Session`对象的`...
【标题】"test_hibernate_oracle_03.zip"是一个包含使用Hibernate框架与Oracle数据库进行CRUD操作(创建、读取、更新、删除)的示例项目。这个压缩包提供了有关如何通过Hibernate在Oracle数据库中执行插入、查询、...
在本Demo中,Hibernate3可能被用来创建User实体类,映射到Oracle数据库中的用户表,通过HQL(Hibernate Query Language)进行数据查询和更新。 Oracle作为一款强大的关系型数据库管理系统,广泛应用于大型企业级...
Hibernate支持实体类、映射文件、事务管理、查询语言HQL等特性,极大地提高了开发效率。在"市调管理系统"中,Hibernate可能被用来管理和操作市场调查数据,如调查问卷、结果分析等。 【Oracle】Oracle数据库是全球...
Oracle JDBC驱动程序允许Java应用程序连接到Oracle数据库,执行SQL语句,处理结果集等。 在压缩包“Java工程常用到的jar包”中,可能包含了以下内容: - Hibernate相关的jar文件,如hibernate-core.jar、hibernate-...
Struts2.0、Hibernate和Oracle的整合是Java Web开发中的常见组合,它们分别负责表现层、持久层和数据存储层。在这个项目中,我们关注的是分页问题,这是一个优化用户体验,提高系统性能的重要功能。分页使得大量数据...
在车辆管理系统中,Hibernate用于将车辆实体类(如车辆信息、车主信息等)映射到数据库表,通过HQL(Hibernate Query Language)进行数据查询,提高了开发效率并降低了数据库操作的复杂性。 3. Spring: Spring框架...
5. 支持多种数据库:Hibernate可以轻松切换不同的数据库,如MySQL、Oracle、PostgreSQL等,无需修改代码。 三、Hibernate3的应用 1. 配置:在项目中,我们需要配置Hibernate的连接参数,包括数据库URL、用户名、...
在本主题中,我们将深入探讨如何使用NHibernate与Oracle数据库进行连接,以及如何执行常见的CRUD(创建、读取、更新和删除)操作和九种不同的查询方式。 首先,为了建立NHibernate与Oracle的连接,我们需要以下组件...
Oracle支持多种高级特性,如存储过程、触发器和分区等,可以提高数据处理的效率和安全性。 5. **CRUD操作**: - **Create**(创建):在添加数据时,我们首先需要在业务层(Service)创建一个新的实体对象,填充...
MyEclipse 提供了对Struts、Hibernate以及Oracle等技术的一键配置和集成,简化了开发流程,使得开发者可以更高效地进行企业级应用的构建。 【Struts】 Struts 是一个基于MVC(Model-View-Controller)设计模式的...
HQL (Hibernate Query Language) 是一种面向对象的查询语言,它允许开发人员以面向对象的方式编写查询,而不是直接使用SQL。HQL的关键字通常不区分大小写,但在Java类与属性的名称中则需要注意大小写的一致性。 ###...
在这个示例中,Hibernate 3.5.0负责数据库的CRUD操作,通过HQL(Hibernate查询语言)或SQL与Oracle数据库进行交互。其强大的二级缓存机制和实体管理功能,大大提升了数据处理性能。 3. **Proxool 0.9.1**:Proxool...
"hibernate-release-5.4.25.Final"压缩包包含了所有必需的依赖库,包括Hibernate ORM核心库、JPA提供者、连接池、SQL解析库等。开发者需要根据项目需求,选择合适的jar包导入到项目的类路径中,例如: 1. hibernate...