`
fly.net.cn
  • 浏览: 186476 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Hibernate应用中使用视图

阅读更多
转http://ltc603.iteye.com/blog/67688

Hibernate对于一些函数(如extract 、union,oracle数据库)不支持,导致用hql语句实现一些功能很麻烦,所以用了视图,
下面是在oracle数据库上的使用,工具MyEclipse。
1. 建立视图

例如:更加需要,建立视图cash_flow

代码
  1. create or replace view cash_flow as  
  2. select gather_date,description,gahter_sum,group_cn from actual_gather ag where(ag.gahter_sum>0) union all select expense_time,remark,(0 - expense_sum),group_cn from cash_expense ce where (ce.expense_sum >0) order by gather_date desc  
<script type="text/javascript">render_code();</script>

2、导出类和配置文件
在MyEclipse Database explorer视图下,点击右键可以建立数据库连接文件,成功连接上数据库后,在TABLE下面是常用的导出表所对应配置文件和java类功能。
即一个java基类AbstractModel.java,一个子类Model.java,和一个配置文件Model.hbm
而在VIEW下面,MyEclipse将把其中的视图当作表来导出。但导出的文件略有不同,多一个java类。
即AbstractCashFlow.java,CashFlow.java,CashFlowId.java,CashFlow.hbm等四个文件
其中CashFlowId类的属性就是视图的的属性,并以这些属性作为联合主键。
作为AbstractCashFlow的主键和唯一的属性. CashFlow继承这个父类。
下面为到出的代码

代码
  1. public class CashFlowId  implements java.io.Serializable {  
  2.   
  3.     // Fields      
  4.      private Date gatherDate;  
  5.      private String description;  
  6.      private Long gahterSum;  
  7.      private String groupCn;  
  8.   
  9.     // Constructors  
  10.   
  11.     /** default constructor */  
  12.     public CashFlowId() {  
  13.     }  
  14.       
  15.     /** full constructor */  
  16.     public CashFlowId(Date gatherDate, String description, Long gahterSum, String groupCn) {  
  17.         this.gatherDate = gatherDate;  
  18.         this.description = description;  
  19.         this.gahterSum = gahterSum;  
  20.         this.groupCn = groupCn;  
  21.     }  
  22.       
  23.      
  24.     // Property accessors  
  25.   
  26.     getter、setter方法  
  27.     .............  
  28.   
  29.    public boolean equals(Object other) {  
  30.          if ( (this == other ) ) return true;  
  31.          if ( (other == null ) ) return false;  
  32.          if ( !(other instanceof CashFlowId) ) return false;  
  33.          CashFlowId castOther = ( CashFlowId ) other;   
  34.            
  35.          return ( (this.getGatherDate()==castOther.getGatherDate()) || ( this.getGatherDate()!=null && castOther.getGatherDate()!=null && this.getGatherDate().equals(castOther.getGatherDate()) ) )  
  36.  && ( (this.getDescription()==castOther.getDescription()) || ( this.getDescription()!=null && castOther.getDescription()!=null && this.getDescription().equals(castOther.getDescription()) ) )  
  37.  && ( (this.getGahterSum()==castOther.getGahterSum()) || ( this.getGahterSum()!=null && castOther.getGahterSum()!=null && this.getGahterSum().equals(castOther.getGahterSum()) ) )  
  38.  && ( (this.getGroupCn()==castOther.getGroupCn()) || ( this.getGroupCn()!=null && castOther.getGroupCn()!=null && this.getGroupCn().equals(castOther.getGroupCn()) ) );  
  39.    }  
  40.      
  41.    public int hashCode() {  
  42.          int result = 17;  
  43.            
  44.          result = 37 * result + ( getGatherDate() == null ? 0 : this.getGatherDate().hashCode() );  
  45.          result = 37 * result + ( getDescription() == null ? 0 : this.getDescription().hashCode() );  
  46.          result = 37 * result + ( getGahterSum() == null ? 0 : this.getGahterSum().hashCode() );  
  47.          result = 37 * result + ( getGroupCn() == null ? 0 : this.getGroupCn().hashCode() );  
  48.          return result;  
  49.    }     
  50. }  
<script type="text/javascript">render_code();</script>
代码
  1. public abstract class AbstractCashFlow  implements java.io.Serializable {  
  2.   
  3.      private CashFlowId id;  
  4.   
  5.     // Constructors  
  6.     /** default constructor */  
  7.     public AbstractCashFlow() {  
  8.     }  
  9.   
  10.     /** full constructor */  
  11.     public AbstractCashFlow(CashFlowId id) {  
  12.         this.id = id;  
  13.     }  
  14.      
  15.     // Property accessors  
  16.   
  17.     public CashFlowId getId() {  
  18.         return this.id;  
  19.     }  
  20.       
  21.     public void setId(CashFlowId id) {  
  22.         this.id = id;  
  23.     }  
  24. }  
<script type="text/javascript">render_code();</script>
代码
  1. public class CashFlow extends AbstractCashFlow implements java.io.Serializable {  
  2.     // Constructors  
  3.     /** default constructor */  
  4.     public CashFlow() {  
  5.     }  
  6.     /** full constructor */  
  7.     public CashFlow(CashFlowId id) {  
  8.         super(id);          
  9.     }      
  10. }  
<script type="text/javascript">render_code();</script>
代码
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse - Hibernate Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="com.taiji.costmatrix.model.CashFlow" table="CASH_FLOW">  
  9.         <composite-id name="id" class="com.taiji.costmatrix.model.CashFlowId">  
  10.             <key-property name="gatherDate" type="java.util.Date">  
  11.                 <column name="GATHER_DATE" length="7" />  
  12.             </key-property>  
  13.             <key-property name="description" type="java.lang.String">  
  14.                 <column name="DESCRIPTION" length="1000" />  
  15.             </key-property>  
  16.             <key-property name="gahterSum" type="java.lang.Long">  
  17.                 <column name="GAHTER_SUM" precision="22" scale="0" />  
  18.             </key-property>  
  19.             <key-property name="groupCn" type="java.lang.String">  
  20.                 <column name="GROUP_CN" length="256" />  
  21.             </key-property>  
  22.         </composite-id>  
  23.     </class>  
  24. </hibernate-mapping>  
<script type="text/javascript">render_code();</script>

3.调用
别忘了将hbm文件的路径加到hibernate mapping那
这是就可以直接在dao里hql语句读取,就像操作其他表一样.
但须注意写法.

代码
  1. from CashFlow cf  where cf.id.groupCn=”T”  
<script type="text/javascript">render_code();</script>
也可以直接写sql
代码
  1. Select * from cash_flow 
分享到:
评论

相关推荐

    hibernate 视图

    虽然视图通常用于只读操作,但结合Hibernate的映射机制,我们可以方便地在Java应用程序中使用视图,提高代码的可维护性和复用性。同时,理解和掌握源码有助于我们更好地优化和调试代码,提升开发效率。

    Struts2、Spring和Hibernate应用实例

    "Spring和Hibernate"可能涵盖了Spring如何与Hibernate集成,以及如何在Spring中配置和使用Hibernate的相关信息。"Struts2.doc"则可能讲解了Struts2框架的使用,包括Action配置、拦截器、结果类型等内容。 总的来说...

    Hibernate+Struts的J2EE应用开发2

    在本文提到的策略中,模型层使用Hibernate实现,而视图和控制器则采用Struts框架实现。这种组合方式可以带来以下优势: 1. **降低代码耦合性**:通过将数据访问层(Hibernate)与业务逻辑层和表示层(Struts)分离...

    hibernate开发及整合应用大全

    接下来,书中会涉及如何在Tomcat环境下部署和运行Hibernate应用。Tomcat是一款轻量级的Web服务器和应用服务器,是许多小型到中型项目的首选。书中会指导读者配置Tomcat服务器,使其能够承载使用Hibernate的应用,并...

    MyEclipse开发Struts+Hibernate应用

    在IT行业中,开发Web应用程序时,常常会使用到一系列框架来简化开发流程并提高效率。本教程主要聚焦于使用MyEclipse集成开发环境(IDE)来构建基于Struts和Hibernate的Java Web应用。Struts是MVC(模型-视图-控制器...

    J2EE企业级项目开发-1期 06 hibernate映射视图的使用经验.doc

    本篇文档主要讨论了如何在Hibernate中使用映射视图来处理这种情况,特别是在面对无法直接使用原生SQL(native SQL)的情况下。 Hibernate是一个强大的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转化为...

    SSH应用开发-Hibernate应用入门.zip_hibernate

    本教程提供的"SSH应用开发-Hibernate应用入门.docx"文档,将详细讲解如何配置Hibernate环境,创建实体类,编写映射文件,以及如何进行基本的CRUD操作。对于初学者,这是一个很好的起点,通过学习可以掌握Hibernate的...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    实际的范例应用会包含详细的配置文件、Action类、Service类和DAO类的代码,以及如何在这些类中使用Struts2、Hibernate和Spring的示例。这些代码实例将帮助开发者更好地理解和掌握三者整合的技巧,提升开发效率。

    利用MyEclipse开发Struts+Hibernate应用

    开发者可以在JSP页面中使用Struts2的标签库,如s:property标签显示Action返回的数据,s:form标签创建表单,s:submit标签提交表单请求。 最后,对于内存使用过程,创建对象和对象的引用是一个关键的话题。在Java中,...

    应用SpringMVC与Hibernate进行WEB开发

    Hibernate是一种开源的对象关系映射(ORM)框架,用于在Java应用中处理数据库的持久化操作。其主要优点包括: 1. **对象关系映射**:Hibernate通过配置文件或注解将Java对象与数据库表进行映射,开发者可以使用面向...

    Spring MVC + Hibernate应用Demo

    Spring MVC和Hibernate是Java开发中两个非常...这个"Spring MVC + Hibernate应用Demo"项目是学习和理解这两个框架集成的绝佳实践。通过深入研究项目中的代码和配置,初学者可以更好地理解和掌握这两个框架的使用方法。

    开发Spring.Struts.Hibernate应用

    "Struts.2.Spring应用.pdf"可能专注于Struts 2与Spring的集成,详细讲解如何在Struts 2应用中使用Spring的特性,如Bean管理、事务控制等。"spring框架,技术详解及使用指导.pdf"则可能深入解析Spring框架的各个模块...

    springmvc+hibernate使用jar包集合

    Spring MVC提供了一种模型-视图-控制器(MVC)架构,使得开发者能够有效地组织和管理应用程序的业务逻辑,而Hibernate则是一个强大的对象关系映射(ORM)工具,它简化了数据库操作,使开发者可以使用Java对象来操作...

    Struts/Hibernate应用小例子

    在这个"Struts/Hibernate应用小例子"中,开发者创建了一个简单的通讯录应用,实现了基本的创建(Create)、读取(Read)、更新(Update)和删除(Delete),即CRUD功能。这些基本操作是任何数据驱动应用的核心组成...

    Hibernate应用开发完全手册(源代码)

    该书旨在帮助开发者熟练掌握Hibernate的使用,以便在实际项目中,尤其是电子商城这类业务复杂的场景下,高效地进行数据库操作和数据管理。 Hibernate是一个强大的工具,它简化了Java应用程序与数据库之间的交互,...

    spring+hibernate,自己封装了原生sql的处理,模仿mybatis使用

    开发者可能为了项目需求,或是对现有MyBatis的扩展或简化,创建了自己的SQL解析器,以便在Spring+Hibernate的环境中更便捷地使用自定义SQL。 在实际应用中,这种方式可能包括以下步骤: 1. 定义SQL映射文件,类似于...

Global site tag (gtag.js) - Google Analytics