1.数据库已经建立视图,hibernate只是把视图当作普通的表来映射。
视图VIEW_MER_INST_POS:
select MER.DAYS_MERCHT_ID MER_ID, INST.DAYS_MERCHT_ID INST_ID, POS.POS_ID POS_ID from tbl_days_mercht_attr MER, tbl_days_mercht_info INST, tbl_days_mercht_pos_info POS where MER.days_mercht_id = INST.up_days_mercht_id and INST.days_mercht_id = POS.days_mercht_id
hbm.xml配置
<class name="db.po.ViewMerInstPos" table="VIEW_MER_INST_POS" > <composite-id> <key-property name="merId" column="MER_ID" type="java.lang.String" length="8" /> <key-property name="instId" column="INST_ID" type="java.lang.String" length="8" /> <key-property name="posId" column="POS_ID" type="java.lang.String" length="8" /> </class> </hibernate-mapping>
2.数据库没有视图,用hibernate自己做视图映射
hbm配置如下:
<hibernate-mapping package="huntersxp.db.pojo"> <class name="ViewMerInstPos"> <meta attribute="sync-DAO">false</meta> <subselect> select MER.DAYS_MERCHT_ID MER_ID,INST.SHOP_NM SHOP_NM,POS.POS_ID POS_ID from tbl_days_mercht_attr MER, tbl_days_mercht_info INST, tbl_days_mercht_pos_info POS where MER.days_mercht_id = INST.up_days_mercht_id and INST.days_mercht_id = POS.days_mercht_id </subselect> <synchronize table="tbl_days_mercht_attr"/> <synchronize table="tbl_days_mercht_info"/> <synchronize table="tbl_days_mercht_pos_info"/> <composite-id> <key-property name="merId" column="MER_ID" type="java.lang.String" length="8" /> <key-property name="shopNm" column="SHOP_NM" type="java.lang.String" length="40" /> <key-property name="posId" column="POS_ID" type="java.lang.String" length="40" /> </composite-id> </class> </hibernate-mapping>
其中synchronize表示当表的数据发生变化的时候,视图的数据也会发生变化。
@Entity @Table(name = "test_summary") @Subselect("SELECT i.name AS itemName, MAX(b.amount) AS amountMax, COUNT(*) AS itemCount " + "FROM test_item i " + "INNER JOIN test_bid b ON i.item_id = b.id " + "GROUP BY i.name") @Synchronize( { "test_item", "test_bid" }) // tables impacted public class Summary implements Serializable { private static final long serialVersionUID = 3647575276389635849L; @Id @Column(name = "itemName") private String itemName; @Column(name = "amountMax") private double amountMax; @Column(name = "itemCount") private Integer itemCount; public Summary() { super(); } public Summary(String itemName, double amountMax, Integer itemCount) { super(); this.itemName = itemName; this.amountMax = amountMax; this.itemCount = itemCount; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public double getAmountMax() { return amountMax; } public void setAmountMax(double amountMax) { this.amountMax = amountMax; } public Integer getItemCount() { return itemCount; } public void setItemCount(Integer itemCount) { this.itemCount = itemCount; } }
相关推荐
总结起来,在J2EE项目开发中,使用Hibernate映射视图是一种解决复杂查询和跨表统计的有效策略。当原生SQL不适用时,创建视图并进行相应的ORM配置可以保持代码的整洁性和可维护性。需要注意的是,视图的映射可能会...
在Java企业级开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作...在实践中,不断探索和理解这些关联映射方式,能够使开发者更加熟练地驾驭Hibernate,提升软件开发的质量和效率。
在Java的持久化框架Hibernate中,一对一(One-to-One)映射是一种常见的关系映射方式,它用于表示两个实体之间一对一的关联关系。在这种关系中,一个实体对应另一个实体的唯一实例。本实例将深入探讨如何在Hibernate...
这种方式更加符合Java程序员的面向对象编程思想,也是在项目设计阶段较为常见的一种方式。 **步骤详解:** 1. **创建Java POJO对象:** - 手动创建Java实体类(User),并为其添加Hibernate注解,例如`@Entity`等,...
### Struts2、Spring、Hibernate使用XML的整合方式 #### 概述 本文档将详细介绍如何使用XML配置文件实现Struts2、Spring以及Hibernate(通常称为SSH)这三种技术的整合,以支持一个简单的商品管理系统。这个系统...
XDoclet曾是用于自动生成Hibernate映射文件和Java类的工具,但在现代开发中,更多地使用注解驱动的方式,减少了对XDoclet的依赖。 以上是JSF和Hibernate的基本介绍,以及它们在Web开发中的角色。通过深入学习这两个...
**二、一对一映射的两种类型** 1. **主键关联(Primary Key Join)**:两个实体共享同一个主键,这通常意味着它们是同一个表的不同视图或者表的一部分。 2. **外键关联(Foreign Key Join)**:一个实体的主键作为...
8. **Query和Criteria API**:Hibernate提供了两种查询方式:HQL(Hibernate Query Language)和Criteria API。HQL是面向对象的查询语言,类似于SQL,而Criteria API则是基于Java对象的查询方式,更加面向API。 9. ...
4. **Criteria和HQL查询**:除了传统的SQL查询,Hibernate提供了Criteria查询和HQL(Hibernate Query Language),这两种查询方式更加面向对象,便于代码的维护。 **二、JSF框架** 1. **UI组件**:JSF提供了一系列...
在IT行业中,尤其是在Web开发领域,使用框架进行项目构建能够极大地提高开发效率和代码质量。本案例主要关注的是...通过实践这个案例,开发者可以提升自己的Java Web开发技能,并对这两种框架的整合有更深入的理解。
在"Struts2+Hibernate4+Spring3整合"中,通常有两种方式实现整合: 1. **XML方式**:这是传统的配置方式,所有的配置信息都在XML文件中。Struts2的配置文件(struts.xml)定义Action和结果,Hibernate的配置文件...
SpringMVC 和 Hibernate4 是两种在 Java Web 开发中广泛使用的框架。SpringMVC 用于构建应用程序的控制层,提供模型-视图-控制器(MVC)架构,而 Hibernate4 则是对象关系映射(ORM)框架,帮助开发者简化数据库操作...
这个“Struts+Hibernate项目”旨在为开发者提供一个学习和实践的平台,帮助他们快速理解这两种框架的集成使用,并应用于实际项目开发。 Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于...
Criteria API提供了一种面向对象的方式来查询数据库,比SQL更易读、更灵活。 **整合SpringMVC和Hibernate** 整合SpringMVC和Hibernate,主要是为了让SpringMVC能够调用Hibernate提供的服务进行数据操作。通常步骤...
Struts1和Hibernate是两种非常重要的Java开发框架,它们在企业级应用开发中扮演着核心角色。Struts1主要用于控制应用程序的流程,而Hibernate则是一个强大的对象关系映射(ORM)框架,它简化了数据库操作。 **...
Struts和Hibernate是两种在Java Web开发中广泛使用的开源框架,它们共同构成了许多企业级应用的基础。本项目是一个基于Struts和Hibernate实现的在线商城系统,具有完整的功能和良好的架构设计。 Struts是一个用于...
Struts和Hibernate是Java开发中两个非常重要的框架,它们在构建企业级Web应用程序时起着核心作用。Struts是MVC(模型-视图-...通过实际操作,你可以更好地掌握这两种框架的使用技巧,为后续的J2EE开发打下坚实的基础。
Hibernate则是一个对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作数据库,而无需直接编写SQL语句。Hibernate通过配置文件和注解来定义Java对象(POJOs)与数据库表之间的映射关系,提供了透明的数据...
Hibernate支持HQL(Hibernate Query Language)和Criteria API两种查询方式,它们都是面向对象的,更加易读且可避免SQL注入问题。 7. **性能优化:** - 第二级缓存:通过插件配置,可以启用和配置Hibernate的第二...