HibernateUtil 和 jar包和demo中一致,这里不再列出。
1.实体类
public class Dept { private String deptId; private String deptName; private String deptPid; // getter,setter 方法 }
public class User { private String id; private String userName; private String password; private String trueName; //其他字段省略。。 private String enabled; private Dept dept; //关联 //getter、setter方法 }
2.数据库与PO类映射文件
Dept.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.hibernate.po.Dept" table="ROMS_SYS_DEPT"> <id name="deptId" type="java.lang.String" column="DEPT_ID"> <!-- <generator class="uuid"> </generator> --> </id> <property name="deptName" type="java.lang.String" column="DEPT_NAME"/> <property name="deptPid" type="java.lang.String" column="PDEPT_ID"/> </class> </hibernate-mapping>
User.hbm.xml
<hibernate-mapping> <class name="org.hibernate.po.User" table="ROMS_SYS_USER"> <id name="id" type="java.lang.String" column="ID" > <generator class="uuid"> </generator> </id> <property name="userName" type="java.lang.String" column="USERNAME" /> <property name="password" type="java.lang.String" column="PASSWORD" /> <property name="trueName" type="java.lang.String" column="TRUENAME" /> <property name="enabled" type="java.lang.String" column="ENABLED" /> <many-to-one name="dept" class="org.hibernate.po.Dept" column="DEPT_ID" cascade="save-update" fetch="join" lazy="false"></many-to-one> <!-- fetch="join" 默认关联查询时是两条sql语句,设置为join,则一条sql语句,对session.get()起作用--> <!-- lazy="false" 取消延缓加载机制 --> </class> </hibernate-mapping>
3.sql文件
DROP TABLE IF EXISTS `ROMS_SYS_USER`; CREATE TABLE `ROMS_SYS_USER` ( `ID` varchar(32) CHARACTER SET utf8 NOT NULL DEFAULT '', `USERNAME` varchar(10) CHARACTER SET utf8 DEFAULT NULL, `PASSWORD` varchar(32) CHARACTER SET utf8 DEFAULT NULL, `TRUENAME` varchar(20) CHARACTER SET utf8 DEFAULT NULL, `AREA_ID` varchar(32) CHARACTER SET utf8 DEFAULT NULL, `DEPT_ID` varchar(32) CHARACTER SET utf8 DEFAULT NULL, `ENABLED` char(1) CHARACTER SET utf8 DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Dept建表 与demo一致,省略
新增
1.直接增加部门
Dept dept = new Dept(); dept.setDeptId("444445555"); dept.setDeptName("测试部门"); dept.setDeptPid("000"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(dept); session.getTransaction().commit(); session.close();
如果dept设置为随机数,则设置的id无效
<generator class="uuid"> </generator>
如果不设置id的生成规则,再次插入会报主键重复。
2.增加人员
Dept dept = new Dept(); dept.setDeptId("5555"); // 直接添加人员 User user = new User(); user.setDept(dept); user.setEnabled("1"); user.setUserName("张三"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(dept); session.getTransaction().commit(); session.close();
增加人员时,可以不增加部门。
但如果增加部门id,并且设置 cascade="save-update" ,如果数据库中部门表有该id,则修改,没有则新增。
删除
1.删除部门id为44444的记录
Dept dept = new Dept(); dept.setDeptId("44444"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.delete(dept); session.getTransaction().commit(); session.close();
部门存在,则删除
修改
1.修改部门
Dept dept = new Dept(); dept.setDeptId("1111"); dept.setDeptName("测试部门"); dept.setDeptPid("001"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.update(dept); session.getTransaction().commit(); session.close();
修改编号为1111的部门,不存在则报错
查询
1、查询部门所有
Session session = HibernateUtil.getSessionFactory().openSession(); Query query = session.createQuery("from Dept"); List<Dept> list = query.list(); for (Dept dept : list) { System.out.println(dept.getDeptName()); } session.close();
2.根据id查询
Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); //load 延缓加载,get 非延缓加载 User user = (User) session.load(User.class, "0de19b0e517747778ba1da9203eec2b3"); String userName = user.getUserName(); System.out.println(userName); String deptName = user.getDept().getDeptName(); System.out.println(deptName); session.getTransaction().commit(); session.close();
3.根据其他字段查询
Session session = HibernateUtil.getSessionFactory().openSession(); Query query = session .createQuery("from User u left outer join fetch u.dept where u.userName=?"); query.setParameter(0, "BJ0008"); //非延缓加载 List<User> list = query.list(); for (User user : list) { System.out.println(user.getUserName()); System.out.println(user.getDept().getDeptName()); } //延缓加载 // Iterator<User> users = query.iterate(); // while (users.hasNext()) { // User user = users.next(); // System.out.println(user.getUserName()); // } session.close();
相关推荐
在"Struts+hibernate实现增删改查功能"的项目中,开发者可能已经完成了以下步骤: 1. **配置环境**:安装JDK、Tomcat服务器、Struts和Hibernate的相关库,配置好环境变量。 2. **数据库设计**:创建MySQL数据库,...
使用Hibernate实现增删改查,将我们需要的dialect.class的值复制粘贴到我们自己建的文件中 url,username,password 的值就用之前我们讲过的即可; 配置文件中的 <property name="show_sql">true</property> 是为了在...
**hibernate实现增删改查** Hibernate 是一个强大的Java持久化框架,它极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是繁琐的数据管理。本文将深入探讨如何使用Hibernate来实现数据库的增删改查...
这个"Struts1 Spring Hibernate实现增删改查小项目"提供了一个基础的示例,演示了如何整合这三个框架来构建Web应用。虽然代码质量可能不高,但对于初学者来说,这是一个很好的学习资源,能够理解如何在实际项目中...
总之,"spring+struts2+hibernate框架双表增删改查"项目为初学者提供了一个完整的实战平台,通过这个项目,学习者可以深入理解这三个框架如何协同工作,实现复杂的数据操作,同时掌握Java Web开发的基本流程和技巧。...
hibernate+struts实现jsp增删改查分页! hibernate实现对数据库的操作,struts实现对表单的操作! 实现了分页功能! (注:本本项目中文会出现乱码,我还没有解决!附有数据库文件!)
在这个"struts+hibernate+mysql做的增删改查小例子"中,我们将深入探讨这三个技术如何协同工作来实现数据的CRUD(Create、Read、Update、Delete)操作。 首先,Struts是一个基于MVC设计模式的Java框架,它主要用于...
例如,当执行一个包含多条SQL语句的增删改查操作时,可以使用Hibernate的Transaction API来控制事务的开始、提交或回滚。 3. **数据查询**:通过Hibernate的Criteria、HQL(Hibernate Query Language)或JPQL(Java...
以上就是使用Spring4和Hibernate4实现增删改查的基本流程。在实际开发中,我们还需要考虑性能优化、事务处理、异常处理、安全性等方面的问题。理解并熟练掌握这两个框架的集成,能够极大地提高Java Web应用的开发...
因项目还在开发,所以本人只拿出一块单独的struts+hibernate增、删、改、查来演示,具体的一些包一看就知道; 项目直接在MyEclipse6.0运行,环境是里面自带的,用过的人都知道。本人测试没有问题。 具体的页面...
在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们常常被联合使用来处理数据库操作,如增、删、改、查(CRUD)。本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作...
spring4.1+struts2.3+hibernate4.1整合案例,实现了增删改查等功能。spring4.1+struts2.3+hibernate4.1整合案例,实现了增删改查等功能。spring4.1+struts2.3+hibernate4.1整合案例,实现了增删改查等功能。spring...
在本项目中,"javaweb(servlet)+hibernate实现登陆注册增删改查简单案列",我们探讨的是如何利用Java Web技术栈,包括Servlet、Hibernate以及MySQL数据库,来构建一个完整的Web应用。这个应用的核心功能是用户注册...
在本教程中,我们将探讨如何将Spring Boot与Hibernate整合,以实现数据库的增删改查操作。Spring Boot简化了配置,而Hibernate则作为强大的对象关系映射(ORM)框架,帮助我们处理数据库交互。让我们逐步解析这个...
- 在业务逻辑层,Service层调用DAO层的方法来操作数据库,实现增删改查功能。 - 最后,Action根据用户请求调用相应的方法,返回结果到视图,通常由JSP页面渲染显示。 这个例子对于初学者来说,是一个很好的实践项目...
SpringMVC、Hibernate和Oracle是Java Web开发中的三大核心技术,它们共同构建了一个强大的后端系统,可以实现诸如登录、注册以及数据的增删改查等基本功能。下面将详细讲解这三个技术及其在实际项目中的应用。 ...
《Hibernate的增删改查操作详解》 在Java Web开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate如何进行增删改查(CRUD)操作,旨在帮助开发者更好地理解...
通过以上步骤,我们就可以实现一个基本的基于Struts2和Hibernate的增删改查应用。这种整合使得开发者可以专注于业务逻辑,而无需过多关注底层的数据库操作,提高了开发效率和代码的可维护性。然而,实际项目中可能还...