问题描述:我在ITeye问答活动里看到一个题目,具体情况见http://www.iteye.com/problems/94079。
个人概括一下问题,应该是这样,
A,数据库有三张表,
Employees表结构(id,first_name,second_name,department_id,position_id)
Department_dict表结构(id,name)
Position_dict表结构(id,name)
B,在bean里面只有Employees对应的类,并没有Department_dict、Position_dict对应的类
C,用Hibernate 实现只有一个类的对象的情况下,将用户需要的name(用户全名first_name+second_name)、department_name、position_name都赋值到这个对象中
工具环境:Hibernate3.1.2,Mysql5.1,Win7(bit),tomcat6.0
解决过程:1. beans里面新建Employees类
public class Employees {
private int id;
private String first_name;
private String second_name;
private int department_id;
private int position_id;
private String name;
private String department_name;
private String position_name;
public Employees(){ //设置默认值 }
public int getId() { return id; }
public void setId(int Id) { this.id = Id; }
public String getFirst_name() { return first_name; }
public void setFirst_name(String First_name) { this.first_name = First_name; }
public String getSecond_name() { return second_name; }
public void setSecond_name(String Second_name) { this.second_name = Second_name; }
public int getDepartment_id() { return department_id; }
public void setDepartment_id(int Department_id) { this.department_id = Department_id; }
public int getPosition_id() { return position_id; }
public void setPosition_id(int Position_id) { this.position_id = Position_id; }
public String getName() { return name; }
public void setName(String Name) { this.name = Name; }
public String getDepartment_name() { return department_name; }
public void setDepartment_name(String Department_name) { this.department_name = Department_name; }
public String getDepartment_name() { return department_name; }
public void setDepartment_name(String Department_name) { this.department_name = Department_name; }
}
2. 配置Hibernate的cfg.xml
<?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">
<hibernate-mapping>
<class name ="domain.Employees" table ="employees" catalog ="employeelogs">
<id name ="id" type ="java.lang.Integer">
<column name ="id"/>
<generator class ="native"/>
</id>
<property name ="first_name" type ="java.lang.String">
<column name ="first_name"/>
</property>
<property name ="second_name" type ="java.lang.String">
<column name ="second_name"/>
</property>
<property name ="department_id" type ="java.lang.String">
<column name ="department_id"/>
</property>
<property name ="position_id" type ="java.lang.String">
<column name ="position_id"/>
</property>
<property generated ="insert" name ="name" formula ="(select concat(e.first_name,e.second_name) from Employees e where e.id = id)"/>
<property generated ="always" name ="department_name" formula ="(select d.name from Department_dict d where d.id = department_id)"/>
<property generated ="always" name ="position_name" formula ="(select p.name from position_dict p where p.id = position_id)"/>
</class>
</hibernate-mapping>
3. Servlet里面的操作
...
Employees employee = new Employees();
employee.setId(33779);
employee.setFirst_name("Leo");
employee.setSecond_name("KunTing");
employee.setDepartment_id(213);
employee.setPosition_id(5578);
Transaction tran = session.beginTransaction();
session.save(employee);
tran.commit();
System.out.println(employee.getName());//全名
System.out.println(employee.getDepartment_name());//部门名称
System.out.println(employee.getPosition_name());//职位名称
...
看结果可知其实主要是发挥了Hibernate的Formula优势。
相关推荐
在标题和描述中提到的"Spring+Hibernate实现)Hibernate公用类",实际上是指创建一个泛化的DAO接口(EntityDao)和它的实现类(EntityDaoImpl)。这样的设计模式可以避免为每个数据模型(如User、News、Company)都...
本项目"Spring+Hibernate实现用户登录"旨在演示如何整合这两个框架,构建一个能够处理用户登录功能的Web应用程序。下面将详细介绍这个项目涉及的关键知识点。 1. **Spring框架**:Spring是一个全面的Java应用开发...
**JSP+Hibernate实现留言板详解** 在Web开发中,创建一个功能完善的留言板系统是一项常见的任务。这个系统通常涉及用户交互、数据存储以及后端逻辑处理。在这个案例中,我们使用了Java服务器页面(JSP)作为视图层...
这些工具类可能包含`PageHelper` 或 `PaginationUtil`,它们通常接受查询条件、每页记录数和当前页数作为参数,返回一个包含分页信息的对象,如总记录数、总页数以及当前页的数据列表。 最后,关于“hibernate的hql...
使用这些资源,开发者可以快速建立一个基于Hibernate的项目,从创建数据库连接,定义和映射持久化类,到编写SQL查询,实现CRUD操作。同时,通过阅读资料,开发者能够深入理解Hibernate的内部机制,提高开发效率并...
2. **引入Hibernate工具**:Hibernate提供了一个名为`hibernatetool`的命令行工具,或者可以通过IDE插件(如Eclipse或IntelliJ IDEA的Hibernate插件)来实现实体类的自动生成。你需要在项目中添加Hibernate的相关...
**Hibernate实现原理模拟** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将通过模拟Hibernate的实现原理,帮助开发者深入理解其工作方式,以便更好地运用到实际...
在IT行业中,Web开发是关键领域之一,而Struts和Hibernate是两个非常重要的框架,用于构建动态、数据驱动的Web应用程序...在实际开发中,还可能涉及事务管理、安全性配置以及更多优化措施,但基础的实现过程如上所述。
这个"hibernate5类包"包含了实现上述功能所需的全部类和库,例如`hibernate-core.jar`包含了核心ORM功能,`hibernate-entitymanager.jar`提供了JPA支持,`hibernate-infinispan.jar`则包含Infinispan缓存相关的组件...
以上就是关于Hibernate中实现多对一单向关联关系的基本知识,包括如何在实体类中定义关联、如何进行数据库操作以及如何查询关联对象。这个源代码示例应该提供了更具体的实现细节,你可以通过查看和运行它来深入理解...
- 创建hibernate.cfg.xml配置文件,设置数据库连接信息(如URL、用户名、密码等)以及持久化类信息。 - 配置实体类,可以使用XML映射文件(hbm.xml)或Java注解。 3. **实体类与数据表映射** Hibernate通过@...
`.classpath`包含了项目的类路径信息,`.myhibernatedata`可能包含了Hibernate的配置或者数据文件,`.mymetadata`和`.project`是IDE相关的元数据,`.settings`存储了项目的特定设置,`WebRoot`是Web应用的根目录,`...
本项目"Struts2+Hibernate实现用户的增删改查"旨在展示如何结合这两种技术来处理数据库操作,实现一个完整的CRUD(Create、Read、Update、Delete)功能。 Struts2是一个基于MVC(Model-View-Controller)设计模式的...
模拟Hibernate时,需要实现事务管理,例如使用try-catch-finally结构来包围多个数据库操作,确保在出现异常时能正确回滚事务。 8. **EasyDB**: 这可能是项目中的一个模块或工具,可能是一个简化版的数据库操作库,...
综上所述,"struts2+hibernate实现登录及增删改操作"涉及到的是如何利用这两个框架构建一个完整的Java Web应用,包括用户身份验证、数据库操作以及对数据的增删改等核心功能。这个小案例可以帮助开发者理解并熟练...
### hibernate生成实体类 #### 简介 在软件开发过程中,ORM(对象关系映射)技术被广泛应用于数据库操作之中,它能够将数据库表结构与程序中的对象进行映射,极大地简化了数据访问层的编码工作。Hibernate作为一款...
自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射文件和实体类。 首先,需要创建一个数据库...
Hibernate则负责数据持久化,将用户信息和部门信息等Java实体类映射到数据库中的tb_deptinfo和tb_userinfo表。 本课程将会讲授如何整合Spring MVC和Hibernate框架来构建一个用户管理系统,其中会涵盖以下知识点: ...
1. **hibernate.cfg.xml**:这是Hibernate的主要配置文件,用于设置数据库连接信息、实体类扫描路径等。例如: ```xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD ...