`

Hibernate实现类数少类信息多

阅读更多

问题描述:我在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公用类

    在标题和描述中提到的"Spring+Hibernate实现)Hibernate公用类",实际上是指创建一个泛化的DAO接口(EntityDao)和它的实现类(EntityDaoImpl)。这样的设计模式可以避免为每个数据模型(如User、News、Company)都...

    Spring+Hibernate实现用户登录

    本项目"Spring+Hibernate实现用户登录"旨在演示如何整合这两个框架,构建一个能够处理用户登录功能的Web应用程序。下面将详细介绍这个项目涉及的关键知识点。 1. **Spring框架**:Spring是一个全面的Java应用开发...

    JSP+Hibernate实现留言板

    **JSP+Hibernate实现留言板详解** 在Web开发中,创建一个功能完善的留言板系统是一项常见的任务。这个系统通常涉及用户交互、数据存储以及后端逻辑处理。在这个案例中,我们使用了Java服务器页面(JSP)作为视图层...

    hibernate的大部分的工具类

    这些工具类可能包含`PageHelper` 或 `PaginationUtil`,它们通常接受查询条件、每页记录数和当前页数作为参数,返回一个包含分页信息的对象,如总记录数、总页数以及当前页的数据列表。 最后,关于“hibernate的hql...

    hibernate工具类大全

    使用这些资源,开发者可以快速建立一个基于Hibernate的项目,从创建数据库连接,定义和映射持久化类,到编写SQL查询,实现CRUD操作。同时,通过阅读资料,开发者能够深入理解Hibernate的内部机制,提高开发效率并...

    生成hibernate实体类

    2. **引入Hibernate工具**:Hibernate提供了一个名为`hibernatetool`的命令行工具,或者可以通过IDE插件(如Eclipse或IntelliJ IDEA的Hibernate插件)来实现实体类的自动生成。你需要在项目中添加Hibernate的相关...

    Hibernate实现原理模拟

    **Hibernate实现原理模拟** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将通过模拟Hibernate的实现原理,帮助开发者深入理解其工作方式,以便更好地运用到实际...

    hibernate注册功能的实现

    在IT行业中,Web开发是关键领域之一,而Struts和Hibernate是两个非常重要的框架,用于构建动态、数据驱动的Web应用程序...在实际开发中,还可能涉及事务管理、安全性配置以及更多优化措施,但基础的实现过程如上所述。

    hibernate5类包

    这个"hibernate5类包"包含了实现上述功能所需的全部类和库,例如`hibernate-core.jar`包含了核心ORM功能,`hibernate-entitymanager.jar`提供了JPA支持,`hibernate-infinispan.jar`则包含Infinispan缓存相关的组件...

    hibernate多对一单向关联关系实现源码

    以上就是关于Hibernate中实现多对一单向关联关系的基本知识,包括如何在实体类中定义关联、如何进行数据库操作以及如何查询关联对象。这个源代码示例应该提供了更具体的实现细节,你可以通过查看和运行它来深入理解...

    Hibernate方法的实现

    - 创建hibernate.cfg.xml配置文件,设置数据库连接信息(如URL、用户名、密码等)以及持久化类信息。 - 配置实体类,可以使用XML映射文件(hbm.xml)或Java注解。 3. **实体类与数据表映射** Hibernate通过@...

    struts2 hibernate 实现无限级联 树形分类

    `.classpath`包含了项目的类路径信息,`.myhibernatedata`可能包含了Hibernate的配置或者数据文件,`.mymetadata`和`.project`是IDE相关的元数据,`.settings`存储了项目的特定设置,`WebRoot`是Web应用的根目录,`...

    Struts2+Hibernate实现用户的增删改查

    本项目"Struts2+Hibernate实现用户的增删改查"旨在展示如何结合这两种技术来处理数据库操作,实现一个完整的CRUD(Create、Read、Update、Delete)功能。 Struts2是一个基于MVC(Model-View-Controller)设计模式的...

    java模拟hibernate实现

    模拟Hibernate时,需要实现事务管理,例如使用try-catch-finally结构来包围多个数据库操作,确保在出现异常时能正确回滚事务。 8. **EasyDB**: 这可能是项目中的一个模块或工具,可能是一个简化版的数据库操作库,...

    struts2+hibernate实现登录及增删改操作

    综上所述,"struts2+hibernate实现登录及增删改操作"涉及到的是如何利用这两个框架构建一个完整的Java Web应用,包括用户身份验证、数据库操作以及对数据的增删改等核心功能。这个小案例可以帮助开发者理解并熟练...

    hibernate生成实体类

    ### hibernate生成实体类 #### 简介 在软件开发过程中,ORM(对象关系映射)技术被广泛应用于数据库操作之中,它能够将数据库表结构与程序中的对象进行映射,极大地简化了数据访问层的编码工作。Hibernate作为一款...

    自动生成hibernate映射文件和实体类

    自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射文件和实体类。 首先,需要创建一个数据库...

    spring mvc+hibernate实现的用户管理系统

    Hibernate则负责数据持久化,将用户信息和部门信息等Java实体类映射到数据库中的tb_deptinfo和tb_userinfo表。 本课程将会讲授如何整合Spring MVC和Hibernate框架来构建一个用户管理系统,其中会涵盖以下知识点: ...

    Hibernate基本实现

    1. **hibernate.cfg.xml**:这是Hibernate的主要配置文件,用于设置数据库连接信息、实体类扫描路径等。例如: ```xml &lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD ...

Global site tag (gtag.js) - Google Analytics