在Hibernate3.0中,原来Hibernate2.1的Session接口中的有些基本方法也被废弃,但为了简化升级,这些方法依然是可用的,可以通过org.hibernate.classic.Session子接口来访问它们,例如:
org.hibernate.classic.Session session=sessionFactory.openSession();
session.delete("delete from Customer ");
在Hibernate3.0中,org.hibernate.classic.Session接口继承了org.hibernate.Session接口,在org.hibernate.classic.Session接口中包含了一系列被废弃的方法,如find()、interate()等。SessionFactory接口的openSession()方法返回org.hibernate.classic.Session类型的实例。如果希望在程序中完全使用Hibernate3.0,可以采用以下方式创建Session实例:
org.hibernate.Session session=sessionFactory.openSession();
如果是对已有的程序进行简单的升级,并且希望仍然调用Hibernate2.1中Session的一些接口,可以采用以下方式创建Session实例:
org.hibernate.classic.Session session=sessionFactory.openSession();
在Hibernate3.0中,Session接口中被废弃的方法包括:
* 执行查询的方法:find()、iterate()、filter()和delete(String hqlSelectQuery)
* saveOrUpdateCopy()
Hibernate3.0一律采用createQuery()方法来执行所有的查询语句,采用DELETE 查询语句来执行批量删除,采用merge()方法来替代 saveOrUpdateCopy()方法。
提示:在Hibernate2.1中,Session的delete()方法有几种重载形式,其中参数为HQL查询语句的delete()方法在Hibernate3.0中被废弃,而参数为Ojbect类型的的delete()方法依然被支持。delete(Object o)方法用于删除参数指定的对象,该方法支持级联删除。
Hibernate2.1没有对批量更新和批量删除提供很好的支持,而Hibernate3.0对批量更新和批量删除提供了支持,能够直接执行批量更新或批量删除语句,无需把被更新或删除的对象先加载到内存中。以下是通过Hibernate3.0执行批量更新的程序代码:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlUpdate = "update Customer set name = :newName where name =
ldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
以下是通过Hibernate3.0执行批量删除的程序代码:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlDelete = "delete Customer where name =
ldName";
int deletedEntities = s.createQuery( hqlDelete )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
沈阳网站制作,转载请说明出处:http://www.esnsc.com/news210.html
分享到:
相关推荐
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. # ###################### ### Query Language ### ###################### ## define query language ...
public org.hibernate.classic.Session getCurrentSession() throws HibernateException { if (currentSessionContext == null) { throw new HibernateException("No CurrentSessionContext configured!"); } ...
- 错误2:`java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session` - 解决方案:由于Hibernate4移除了HibernateDaoSupport,需要改写DAO层,直接使用Hibernate...
关键问题有几个,第一个HibernateDaoSupport这个没有了,在使用hibernateTemplate的时候,报错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session 很是悲...
tx = session.beginTransaction(); Employee emp = new Employee(); emp.setId(1); emp.setName("John Doe"); session.save(emp); tx.commit(); } catch (Exception e) { if (tx != null) tx.rollback(); ...
public org.hibernate.classic.Session getCurrentSession() throws HibernateException { if ( currentSessionContext == null ) { throw new HibernateException( "No CurrentSessionContext configured!" ); }...
核心包包括了hibernate-core.jar,其中包含了Hibernate的主要功能,如Session接口、Criteria API、Entity管理和Query语言等。 2. **MySql驱动包**:为了连接MySQL数据库,需要MySQL的JDBC驱动(mysql-connector-...
Transaction transaction = session.beginTransaction(); User user = new User(); // 设置属性... session.save(user); transaction.commit(); session.close(); ``` 总结,Hibernate的相关jar包是Java开发...
8. **slf4j-api.jar**和相应的实现库(如logback-classic.jar):提供了日志记录框架,Hibernate的日志输出依赖于这些库。 9. **jboss-logging.jar**:JBoss的logging框架,Hibernate使用它来进行内部的日志记录。 ...
6. 第三方库:Hibernate可能会依赖一些第三方库,如`slf4j-api.jar`和`logback-classic.jar`,它们用于日志记录,帮助开发者追踪和调试应用程序中的问题。 7. 配置和初始化:在使用Hibernate之前,需要通过`...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
同时,通过SessionFactory创建Session对象,然后通过Session进行数据操作。Hibernate还提供了Criteria、Query和HQL等查询方式,以满足不同场景的需求。 使用Hibernate可以显著提高开发效率,减少与数据库交互的代码...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
7. **slf4j-api.jar**和相应的实现库(如logback-classic.jar或log4j.jar):日志记录框架,用于记录Hibernate的操作信息。 8. **mysql-connector-java.jar**或其他数据库驱动:与特定数据库(如MySQL、Oracle、...
它提供了对Hibernate Session和SessionFactory的接口,以及对HQL(Hibernate Query Language)的支持。 2. **hibernate-entitymanager.jar**:这个JAR包提供了JPA(Java Persistence API)的实现,是Hibernate支持...
2. **Session和Transaction管理**:Hibernate提供Session接口,它是数据库会话的代表,用于执行CRUD(创建、读取、更新、删除)操作。同时,Hibernate支持事务管理,确保数据的一致性和完整性。 3. **查询语言(HQL...
一级缓存是Hibernate Session内部的缓存,每个Session都有自己的缓存,用于存储当前Session内的实体对象。二级缓存则是SessionFactory级别的,它可以跨多个Session共享,进一步减少对数据库的访问。 Ehcache作为二...
1. **Hibernate Core**: 这是Hibernate的核心库,包含了所有必要的API和实现,如SessionFactory、Session、Transaction等。在`hibernate-core-x.x.x.Final.jar`中,你可以找到这些核心组件。 2. **JDBC驱动**: ...