`

hibernate 实现增删改查

 
阅读更多

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();
 

 

 

  • 大小: 32.7 KB
  • 大小: 28.3 KB
分享到:
评论

相关推荐

    Struts+hibernate实现增删改查功能

    在"Struts+hibernate实现增删改查功能"的项目中,开发者可能已经完成了以下步骤: 1. **配置环境**:安装JDK、Tomcat服务器、Struts和Hibernate的相关库,配置好环境变量。 2. **数据库设计**:创建MySQL数据库,...

    使用Hibernate实现增删改查

    使用Hibernate实现增删改查,将我们需要的dialect.class的值复制粘贴到我们自己建的文件中 url,username,password 的值就用之前我们讲过的即可; 配置文件中的 &lt;property name="show_sql"&gt;true&lt;/property&gt; 是为了在...

    hibernate实现增删改查

    **hibernate实现增删改查** Hibernate 是一个强大的Java持久化框架,它极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是繁琐的数据管理。本文将深入探讨如何使用Hibernate来实现数据库的增删改查...

    Struts1 Spring Hibernate实现增删改查小项目

    这个"Struts1 Spring Hibernate实现增删改查小项目"提供了一个基础的示例,演示了如何整合这三个框架来构建Web应用。虽然代码质量可能不高,但对于初学者来说,这是一个很好的学习资源,能够理解如何在实际项目中...

    spring+struts2+hibernate框架双表增删改查

    总之,"spring+struts2+hibernate框架双表增删改查"项目为初学者提供了一个完整的实战平台,通过这个项目,学习者可以深入理解这三个框架如何协同工作,实现复杂的数据操作,同时掌握Java Web开发的基本流程和技巧。...

    hibernate+struts实现jsp增删改查分页

    hibernate+struts实现jsp增删改查分页! hibernate实现对数据库的操作,struts实现对表单的操作! 实现了分页功能! (注:本本项目中文会出现乱码,我还没有解决!附有数据库文件!)

    struts+hibernate+mysql做的增删改查小例子

    在这个"struts+hibernate+mysql做的增删改查小例子"中,我们将深入探讨这三个技术如何协同工作来实现数据的CRUD(Create、Read、Update、Delete)操作。 首先,Struts是一个基于MVC设计模式的Java框架,它主要用于...

    用stuts+hibernate实现增删改查源代码

    例如,当执行一个包含多条SQL语句的增删改查操作时,可以使用Hibernate的Transaction API来控制事务的开始、提交或回滚。 3. **数据查询**:通过Hibernate的Criteria、HQL(Hibernate Query Language)或JPQL(Java...

    spring4+hibernate4实现增删改查

    以上就是使用Spring4和Hibernate4实现增删改查的基本流程。在实际开发中,我们还需要考虑性能优化、事务处理、异常处理、安全性等方面的问题。理解并熟练掌握这两个框架的集成,能够极大地提高Java Web应用的开发...

    Struts+Hibernate增删改查

    因项目还在开发,所以本人只拿出一块单独的struts+hibernate增、删、改、查来演示,具体的一些包一看就知道; 项目直接在MyEclipse6.0运行,环境是里面自带的,用过的人都知道。本人测试没有问题。 具体的页面...

    Spring+Hibernate实现增删改查的两种方法

    在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整合案例,实现了增删改查等功能。spring4.1+struts2.3+hibernate4.1整合案例,实现了增删改查等功能。spring...

    javaweb(servlet)+hibernate实现登陆注册增删改查简单案列

    在本项目中,"javaweb(servlet)+hibernate实现登陆注册增删改查简单案列",我们探讨的是如何利用Java Web技术栈,包括Servlet、Hibernate以及MySQL数据库,来构建一个完整的Web应用。这个应用的核心功能是用户注册...

    springboot集成hibernate实现增删改查

    在本教程中,我们将探讨如何将Spring Boot与Hibernate整合,以实现数据库的增删改查操作。Spring Boot简化了配置,而Hibernate则作为强大的对象关系映射(ORM)框架,帮助我们处理数据库交互。让我们逐步解析这个...

    用struts1实现的增删改查功能

    - 在业务逻辑层,Service层调用DAO层的方法来操作数据库,实现增删改查功能。 - 最后,Action根据用户请求调用相应的方法,返回结果到视图,通常由JSP页面渲染显示。 这个例子对于初学者来说,是一个很好的实践项目...

    SpringMVC+Hibernate+Oracle 实现登录、注册、增删改查功能!

    SpringMVC、Hibernate和Oracle是Java Web开发中的三大核心技术,它们共同构建了一个强大的后端系统,可以实现诸如登录、注册以及数据的增删改查等基本功能。下面将详细讲解这三个技术及其在实际项目中的应用。 ...

    hibernate增删改查

    《Hibernate的增删改查操作详解》 在Java Web开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate如何进行增删改查(CRUD)操作,旨在帮助开发者更好地理解...

    struts2和hibernate结合增删改查

    通过以上步骤,我们就可以实现一个基本的基于Struts2和Hibernate的增删改查应用。这种整合使得开发者可以专注于业务逻辑,而无需过多关注底层的数据库操作,提高了开发效率和代码的可维护性。然而,实际项目中可能还...

Global site tag (gtag.js) - Google Analytics