hiberante 部门与员工案例操作
来源:互联网 发布:java中级工程师面试题 编辑:程序博客网 时间:2024/05/17 18:28
好久没用hibernate了。
今天用起来,呵呵有点冲突
这是部门的relation:
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="com.oasystem.demo.bean">
<class name="DepartmentBean" table="department_b">
<id name="departmentId" column="department_id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="departName" column="department_name" type="java.lang.String" />
<set name="employeeBeans" cascade="all" inverse="true" >
<key column="department_id"></key>
<one-to-many class="EmployeeBean"/>
</set>
</class>
</hibernate-mapping
这是员工的relation:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--看出这里和部门的不一制没,这里的这是因为我工具导入的是3.0的 这里手动导入的是3.0以上的。然而这样是不冲突的,但是如果用<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >的话。many - to -one 是不能是使用
fetch="select"
access="property"
not-null="true"
lazy="false" 的。
-->
<hibernate-mapping package="com.oasystem.demo.bean">
<class name="EmployeeBean" table="employeebean_b">
<id name="employeeId" column="employee_id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="employeeName" column="employee_name" type="java.lang.String" />
<!-- 此时实验的是 many - to -one 多个员工对应单个部门 -->
<many-to-one name="departmentBean" class="DepartmentBean" column="department_id" insert="false" fetch="select"
access="property"
not-null="true"
lazy="false" >
</many-to-one>
</class>
</hibernate-mapping>
以上relation one-many 和many - to -one 这样配置之后,在级联删除操作在控制台生成的sql 打印是:
Hibernate: select this_.department_id as department1_0_, this_.department_name as department2_0_0_ from department_b this_ where this_.department_id=?Hibernate: select employeebe0_.department_id as department3_1_, employeebe0_.employee_id as employee1_1_, employeebe0_.employee_id as employee1_0_, employeebe0_.employee_name as employee2_1_0_, employeebe0_.department_id as department3_1_0_ from employeebean_b employeebe0_ where employeebe0_.department_id=?
Hibernate: delete from employeebean_b where employee_id=?
Hibernate: delete from department_b where department_id=?
从打印sql来看多的一方,是先删除的。这是因为关系的维护是员工。是用多的一方维护这种级联关系 部门中设置cascade="all" inverse="true" 。
员工及设置立即加载lazy="false" 属性
代码如下:
public void deleteDepartment(DepartmentBean departmentBean){
session = HibernateSessionFactory.getSession();
tr = session.beginTransaction();
Criteria criteria = session.createCriteria(DepartmentBean.class);
criteria.add(Restrictions.eq("departmentId", departmentBean.getDepartmentId()));
List list = criteria.list();
System.out.println(" == "+list.size());
if (list.size() != 0) {
DepartmentBean bean = (DepartmentBean)list.get(0);
Set<EmployeeBean> employeeBeans = bean.getEmployeeBeans();
EmployeeBean bean2 =employeeBeans.iterator().next();
session.delete(bean);
}
tr.commit();
session.close();
}
/**删除部门连同部门下的员工也要删除掉**/
DepartmentBean departmentBeanTest2 = new DepartmentBean();
departmentBeanTest2.setDepartmentId(6);
hibernateAdqe.deleteDepartment(departmentBeanTest2);
- hiberante 部门与员工案例操作
- 员工与部门之间的关系
- oracle员工表和部门表基本操作
- 一道关于员工与部门查询的SQL笔试题
- 关于员工与部门查询的SQL笔试题
- ssm项目---人事管理系统:员工与部门、职位实现一对一
- 完整的Spring-boot实现(部门与员工)
- Hibernate 员工和部门
- 获得员工部门
- 使用JDBC连接MySQL数据库--典型案例分析(一)---员工数据读取与操作
- 列出与'SCOTT'从事相同工作的所有员工及部门名称、部门人数、平均工资
- MapReduce案例学习(3) 求每个部门最早进入公司的员工姓名
- MapReduce案例学习(7) 列出名字以J开头的员工姓名及其所属部门名称
- multimap容器案例_按照部门_增删改查员工信息
- 查询部门(包含子部门)员工
- Spring与Hiberante整合
- 部门ID 员工ID 点数
- oracle部门员工表查询
- extjs 资源库云平台 2013.8.29--成绩汇总表
- extjs 资源库云平台 2013.9.20--工作流程设计器
- UML—状态图
- DropBoxManagerServer-日志文件管理
- extjs 资源库云平台 2013.9.21--我的工作流程
- hiberante 部门与员工案例操作
- 工信部发第二批虚拟运营商牌照:苏宁国美获牌
- HDU1107武林
- trunc
- 杭电 2051 Bitset
- linux cp命令
- div和/的区别
- 基础练习 字母图形
- Mac OS 快速查询技巧