hibernate学习笔记
hibernate学习笔记
hibernate学习笔记
hibernate学习笔记
hibernate学习笔记
hibernate学习笔记
hibernate学习笔记
hibernate学习笔记
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点:
1. **删除操作**:
Hibernate支持对数据库表的删除操作,这通常通过Session接口的`delete()`方法实现。例如,如果你想删除一个对象,你可以先从数据库加载它,然后调用`session.delete(object)`。在SQL层面,这将对应于`DELETE FROM`语句。
2. **请求转发**:
在Struts框架中,`ActionForward`用于指定请求的转发路径,例如`return new ActionForward("/index.jsp")`会将请求转发到`index.jsp`页面。然而,需要注意的是,ActionForm中的数据在转发后不再有效,因此需要将表单数据封装到一个Bean中,以便与Hibernate交互。
3. **BeanUtils工具类**:
`org.apache.commons.beanutils.BeanUtils`是一个实用工具类,用于对象属性之间的复制。例如,`BeanUtils.copyProperties(deptinfo, deptActionForm)`将表单数据复制到持久化对象中,便于与Hibernate进行交互。
4. **查询操作**:
Hibernate提供了HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL。创建一个`Query`对象,如`query = session.createQuery(counthql)`,然后调用`query.list()`来执行查询并获取结果列表。
5. **数据插入**:
Hibernate的插入操作可以通过`Session`的`save()`方法实现。在示例代码中,创建一个新的Userinfo对象,设置其属性,然后调用`session.save(userinfo)`。事务管理也是必要的,以确保数据的原子性和一致性。
6. **查询操作(无事务)**:
读取数据时,通常不需要开启事务,除非有特殊需求。Hibernate的HQL查询可以通过`createQuery()`方法创建`Query`对象,然后调用`list()`获取结果集。例如,`hql = "select user from Userinfo user"`这样的HQL语句会返回Userinfo对象的列表。
7. **条件查询(包含中文)**:
当不与Spring框架结合使用时,Hibernate支持在HQL中直接使用中文字符进行模糊匹配,如`hql = "Select user From Userinfo user where user.username like '%用户名 5%'"`。但在Spring环境下,通常需要使用占位符`like :username`,然后通过`query.setString("username", "value")`设置参数。
8. **更新操作**:
更新操作同样需要事务管理,因为它们可能涉及到多条数据库语句。`update()`方法中,首先开启事务,执行更新操作(如`session.update(userinfo)`),然后提交事务,如果发生错误则回滚。
9. **SessionFactory**:
`HibernateSessionFactory`通常是一个工厂类,负责提供`Session`实例。`getSession()`方法用于获取当前线程绑定的Session,而`closeSession()`则用于关闭Session,释放数据库连接。
10. **事务管理**:
Hibernate中的事务管理是通过`Transaction`接口实现的。`beginTransaction()`开始事务,`commit()`提交事务,`rollback()`回滚事务。在异常处理中,确保在发生错误时回滚事务,以保持数据一致性。
以上就是Hibernate学习笔记的一些核心概念和操作示例,涵盖了数据的增删查改以及事务管理。通过理解和实践这些知识点,开发者可以更有效地利用Hibernate进行数据库操作。