美食网站开发环境wordpress单点登录
美食网站开发环境,wordpress单点登录,家装网站模板下载,做网站需要的公司JavaOracle实现企业人事管理系统
第20章 JavaOracle实现企业人事管理系统内容#xff0c;整理出的 Java Oracle Hibernate 开发中涉及的核心语法知识点、安装配置流程、详细代码示例及综合性案例。内容涵盖从环境搭建到 Hibernate 关联关系设计的完整技术栈。 一、开发环境…JavaOracle实现企业人事管理系统第20章 JavaOracle实现企业人事管理系统内容整理出的Java Oracle Hibernate 开发中涉及的核心语法知识点、安装配置流程、详细代码示例及综合性案例。内容涵盖从环境搭建到 Hibernate 关联关系设计的完整技术栈。一、开发环境安装与配置1. 安装 JDKJava Development Kit版本建议JDK 8 或 11Hibernate 5.x 兼容性好下载地址Oracle JDK 或 OpenJDK配置环境变量# Windows 示例JAVA_HOMEC:\Program Files\Java\jdk-11.0.12PATH%JAVA_HOME%\bin2. 安装 Oracle 数据库版本建议Oracle 19c Express Edition免费下载地址Oracle Database XE安装后创建用户CREATEUSERhr IDENTIFIEDBYhr_password;GRANTCONNECT,RESOURCE,DBATOhr;3. 安装 IDE推荐 IntelliJ IDEA 或 Eclipse安装后配置 JDK 和 Maven/Gradle 构建工具。4. 添加 Hibernate 依赖Maven 方式在pom.xml中添加dependencies!-- Hibernate Core --dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-core/artifactIdversion5.6.15.Final/version/dependency!-- Oracle JDBC Driver --dependencygroupIdcom.oracle.database.jdbc/groupIdartifactIdojdbc8/artifactIdversion21.7.0.0/version/dependency/dependencies⚠️ 注意Oracle JDBC 驱动需在 Maven Central 可用若不可用需手动安装到本地仓库。二、核心语法知识点与代码示例知识点 1Hibernate 配置文件hibernate.cfg.xml作用配置数据库连接、方言、映射类等。示例src/main/resources/hibernate.cfg.xml?xml version1.0 encodingutf-8?!DOCTYPEhibernate-configurationPUBLIC-//Hibernate/Hibernate Configuration DTD 3.0//ENhttp://www.hibernate.org/dtd/hibernate-configuration-3.0.dtdhibernate-configurationsession-factory!-- 数据库连接设置 --propertynameconnection.driver_classoracle.jdbc.driver.OracleDriver/propertypropertynameconnection.urljdbc:oracle:thin:localhost:1521:XE/propertypropertynameconnection.usernamehr/propertypropertynameconnection.passwordhr_password/property!-- Hibernate 属性 --propertynamedialectorg.hibernate.dialect.Oracle12cDialect/propertypropertynameshow_sqltrue/propertypropertynameformat_sqltrue/propertypropertynamehbm2ddl.autoupdate/property!-- 自动更新表结构 --!-- 映射文件注册 --mappingresourcecom/example/entity/Employee.hbm.xml/mappingresourcecom/example/entity/Department.hbm.xml//session-factory/hibernate-configuration知识点 2Hibernate 持久化类与映射文件.hbm.xml示例 1部门实体类Department.javapackagecom.example.entity;publicclassDepartment{privateLongdeptId;privateStringdeptName;// getter/setter 省略}示例 2Department.hbm.xml?xml version1.0 encodingUTF-8?!DOCTYPEhibernate-mappingPUBLIC-//Hibernate/Hibernate Mapping DTD 3.0//ENhttp://www.hibernate.org/dtd/hibernate-mapping-3.0.dtdhibernate-mappingclassnamecom.example.entity.DepartmenttableDEPARTMENTSidnamedeptIdcolumnDEPT_IDgeneratorclassnative/!-- 使用数据库自增 --/idpropertynamedeptNamecolumnDEPT_NAMEtypestringlength100//class/hibernate-mapping知识点 3公共模块 —— Hibernate 工具类SessionFactory 管理packagecom.example.util;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;publicclassHibernateUtil{privatestaticfinalSessionFactorysessionFactorybuildSessionFactory();privatestaticSessionFactorybuildSessionFactory(){try{// 读取 hibernate.cfg.xmlreturnnewConfiguration().configure().buildSessionFactory();}catch(Throwableex){System.err.println(初始化 SessionFactory 失败: ex);thrownewExceptionInInitializerError(ex);}}publicstaticSessionFactorygetSessionFactory(){returnsessionFactory;}// 关闭时调用可选publicstaticvoidshutdown(){getSessionFactory().close();}}知识点 4通过 Hibernate 操作持久化对象CRUDpackagecom.example.dao;importcom.example.entity.Employee;importcom.example.util.HibernateUtil;importorg.hibernate.Session;importorg.hibernate.Transaction;importjava.util.List;publicclassEmployeeDAO{// 保存员工publicvoidsave(Employeeemp){SessionsessionHibernateUtil.getSessionFactory().openSession();Transactiontxnull;try{txsession.beginTransaction();session.save(emp);// 持久化tx.commit();}catch(Exceptione){if(tx!null)tx.rollback();e.printStackTrace();}finally{session.close();}}// 查询所有员工SuppressWarnings(unchecked)publicListEmployeefindAll(){SessionsessionHibernateUtil.getSessionFactory().openSession();try{returnsession.createQuery(FROM Employee).list();}finally{session.close();}}// 根据ID删除publicvoiddelete(Longid){SessionsessionHibernateUtil.getSessionFactory().openSession();Transactiontxnull;try{txsession.beginTransaction();Employeeempsession.get(Employee.class,id);if(emp!null){session.delete(emp);}tx.commit();}catch(Exceptione){if(tx!null)tx.rollback();e.printStackTrace();}finally{session.close();}}}知识点 5Hibernate 一对一关联One-to-One场景员工Employee ↔ 薪资待遇Salary实体类// Employee.javapublicclassEmployee{privateLongempId;privateStringname;privateSalarysalary;// 一对一// getters/setters}// Salary.javapublicclassSalary{privateLongsalaryId;privateDoublebasePay;privateEmployeeemployee;// 反向引用// getters/setters}映射文件Employee.hbm.xmlclassnameEmployeetableEMPLOYEESidnameempIdcolumnEMP_IDgeneratorclassnative//idpropertynamenamecolumnNAME/!-- 一对一关联 --one-to-onenamesalaryclassSalarycascadeall//classSalary.hbm.xmlclassnameSalarytableSALARIESidnamesalaryIdcolumnSALARY_IDgeneratorclassforeignparamnamepropertyemployee/param/generator/idpropertynamebasePaycolumnBASE_PAY/one-to-onenameemployeeclassEmployeeconstrainedtrue//class✅cascadeall表示保存 Employee 时自动保存 Salary。知识点 6Hibernate 一对多关联One-to-Many场景部门Department → 多个员工EmployeeDepartment.javapublicclassDepartment{privateLongdeptId;privateStringdeptName;privateSetEmployeeemployeesnewHashSet();// 一对多// getters/setters}Department.hbm.xmlclassnameDepartmenttableDEPARTMENTSidnamedeptIdcolumnDEPT_IDgeneratorclassnative//idpropertynamedeptNamecolumnDEPT_NAME/!-- 一对多关联 --setnameemployeestableEMPLOYEESinversetruelazytruekeycolumnDEPT_ID/one-to-manyclassEmployee//set/classEmployee.hbm.xml补充外键many-to-onenamedepartmentclassDepartmentcolumnDEPT_IDnot-nulltrue/✅inversetrue表示由 Employee 端维护关系性能优化。三、综合性案例人事管理系统核心功能实现功能通过部门树选择员工模拟 GUI 后端逻辑步骤 1查询所有部门及其员工带关联publicListDepartmentloadDepartmentsWithEmployees(){SessionsessionHibernateUtil.getSessionFactory().openSession();try{// 使用 HQL 抓取关联数据避免 N1 问题StringhqlFROM Department d LEFT JOIN FETCH d.employees;returnsession.createQuery(hql).list();}finally{session.close();}}步骤 2前端可构建树形结构伪代码// 假设返回 JSON 给前端[{deptId:1,deptName:研发部,employees:[{empId:101,name:张三},{empId:102,name:李四}]},...]步骤 3待遇管理 —— 更新员工薪资一对一操作publicvoidupdateEmployeeSalary(LongempId,DoublenewBasePay){SessionsessionHibernateUtil.getSessionFactory().openSession();Transactiontxnull;try{txsession.beginTransaction();Employeeempsession.get(Employee.class,empId);if(emp!nullemp.getSalary()!null){emp.getSalary().setBasePay(newBasePay);session.update(emp);// 自动级联更新 Salary}tx.commit();}catch(Exceptione){if(tx!null)tx.rollback();throwe;}finally{session.close();}}四、小结关键技术点回顾技术点说明Hibernate 配置hibernate.cfg.xml配置数据库和映射持久化类POJO .hbm.xml映射文件SessionFactory单例管理线程安全CRUD 操作通过Session的save/load/update/delete一对一关联one-to-oneforeign主键生成器一对多关联setmany-to-one注意inverse级联操作cascadeall/save-update/deleteHQL 查询面向对象的查询语言支持JOIN FETCH五、附数据库初始化脚本Oracle-- 部门表CREATETABLEDEPARTMENTS(DEPT_ID NUMBER GENERATED ALWAYSASIDENTITYPRIMARYKEY,DEPT_NAME VARCHAR2(100)NOTNULL);-- 员工表CREATETABLEEMPLOYEES(EMP_ID NUMBER GENERATED ALWAYSASIDENTITYPRIMARYKEY,NAME VARCHAR2(100)NOTNULL,DEPT_ID NUMBERREFERENCESDEPARTMENTS(DEPT_ID));-- 薪资表一对一CREATETABLESALARIES(SALARY_ID NUMBERPRIMARYKEY,-- 与 EMP_ID 一致BASE_PAY NUMBER(10,2),FOREIGNKEY(SALARY_ID)REFERENCESEMPLOYEES(EMP_ID));如需 Swing GUI 部分主窗体、导航栏、部门树对话框可进一步扩展使用JTreeDefaultTreeModel但本篇聚焦后端 Hibernate Oracle 核心语法与实现。如有需要可继续提供 GUI 层或 Spring Boot 整合版本。