`
hbxflihua
  • 浏览: 667816 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hibernate视图使用实践

阅读更多

Hibernate反向生成工具生成视图会比普通的表多出一个POJOhibernate这样做其实也无可厚非,毕竟hibernate在映射文件中需要一个主键,而视图是没有主键的。不得已,hibernate做了一件自认为很聪明的举动,它把所有的列放在一起组成一个组合主键。但这样以来问题来了,如果这些列中有任何一项为空,其他所有列的值都不会映射,这样在页面中,你就会很无语的看着这些明明不为空的列出现了空值。

 

解决的办法有两种,一种是修改映射文件,从视图的列中找出一个(或多个)具有唯一性的列(或组合列)作为伪主键。。另外一种方式是在视图中自定义一个唯一性的列(例如根据oraclerowid,rownum),并将这一列作为伪主键。这两种方式大同小异,这样就把视图作为一张普通的表在使用了。

 

一般来说,我们很少对一个表去做一个视图(当然也有例外,比如表很大,或表数据很多等等),也就是视图往往会关联到多张表,而且我们也不建议在视图中进行查询以外的操作。我们都知道,hibernate还有一个很不错的功能就是及时同步数据库操作,这个操作在大多数情况下是比较适用的,但有些情况也例外,举个简单的例子,如果在DAOService层对查询出的对象直接setter某一个属性,hibernate会自动帮你同步到数据库(这个时候session还没有关闭)。

 

我在视图的处理中就遇到了类似的问题,我想在Service层,对一些空值做一些特殊的处理,结果hibernate自作聪明的帮我同步到数据库,当然视图的updatehibernate中默认情况下是不被允许的,就会抛出异常。我不想在Action中进行这种处理,但在Service层中数据又极有可能同步到数据库。幸好,hibernate还有一个比较好玩的功能叫做更新不同步的配置,这下让我喜出望外了。在hibernate映射文件中,找到需要特殊处理的属性,将其update属性设置为false。具体示例如下:

<property name="applyMoney" 
      type="java.math.BigDecimal" insert="false" update="false">
                <column name="APPLY_MONEY" precision="22" scale="0" />
</property>

 

 

 

0
0
分享到:
评论
1 楼 edmond207 2013-03-03  
莫非不知道视图也可以建主键的?

相关推荐

    JSF第一步--JSF+Spring+ Hibernate+AJAX编程实践 试读

    在"JSF第一步--JSF+Spring+Hibernate+AJAX编程实践 试读"这本书中,读者可以期待学习如何设置这些技术的集成环境,创建JSF组件,配置Spring容器,理解Hibernate的映射和查询机制,以及如何在JSF中使用AJAX进行异步...

    Struts Spring Hibernate整合实践.doc

    Struts、Spring和Hibernate是Java开发中的三大框架,它们分别负责MVC模式的视图、控制和持久化层。这篇文章将介绍如何将这三个框架整合在一起,以实现一个基础的用户登录和注册功能,并且自定义了一个显示所有用户...

    一个Spring MVC和Hibernate一起使用的个人暂存(2)

    本项目是一个个人整理的Spring MVC与Hibernate整合应用的暂存版本,旨在帮助开发者理解和实践这两个框架的结合使用。通过添加缺失的包并进行配置,此项目可以实现与数据库的连接,查询数据。 首先,Spring MVC是...

    Hibernate之struts2整合hibernate以及MVC分层架构的使用案例hibernate002

    本案例主要关注的是如何将Hibernate ORM(对象关系映射)框架与Struts2 MVC(模型-视图-控制器)框架整合,同时探讨MVC分层架构在实际应用中的运用。以下是对这些知识点的详细说明: **1. Hibernate ORM框架** ...

    使用Hibernate实现任务管理系统

    总结,这个“使用Hibernate实现任务管理系统”项目涵盖了ORM的使用、数据库设计、用户权限管理、分页排序等多个关键点,是学习和实践Java Web开发以及Hibernate技术的良好实例。通过这个项目,开发者能够深入了解...

    Struts Hibernate Spring使用手册

    对于初学者来说,"Struts Hibernate Spring 使用手册"这份资料将会提供详尽的指引,包括框架的安装、配置、基本用法、示例代码等,帮助读者快速上手。在实际项目开发中,结合这份手册和实践操作,可以更深入地理解...

    struts+hibernate 项目

    这个“Struts+Hibernate项目”旨在为开发者提供一个学习和实践的平台,帮助他们快速理解这两种框架的集成使用,并应用于实际项目开发。 Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于...

    基于Struts2+Hibernate的登录注册系统

    同时,系统应该有防止SQL注入的措施,例如使用预编译的SQL语句或使用Hibernate的参数化查询。 在实际运行时,用户通过浏览器发送HTTP请求到服务器,Struts2拦截这些请求并分发给对应的Action执行。Action执行完毕后...

    struts_hibernate整合

    5. **使用Hibernate进行CRUD操作**:在Action类的业务方法中,使用Session的save()、get()、update()、delete()等方法进行增删改查操作。 6. **添加拦截器**:Struts2允许我们自定义拦截器,例如事务管理拦截器,...

    新SSH(spring + spring mvc + hibernate)框架结构的java web案例实践

    6. 视图渲染:熟悉JSP、FreeMarker或其他模板引擎的使用,以及视图解析器的配置。 7. 模型绑定:理解模型对象如何与请求参数绑定,以及数据验证的实现。 8. 测试:学习单元测试和集成测试的编写,使用JUnit、Mockito...

    springmvc spring hibernate整合Demo

    4. 创建实体类:定义与数据库表对应的Java类,使用Hibernate的注解(如@Entity、@Table、@Id等)进行ORM映射。 5. 定义DAO:创建数据访问对象(DAO)接口,包含CRUD操作。这些接口通常由Spring管理,通过代理模式...

    Struts2+Hibernate的增删改查

    综上所述,"Struts2+Hibernate的增删改查"项目是一个典型的Java Web开发示例,涵盖了前端请求处理、后端数据库操作、业务逻辑封装等多个层面,对于初学者来说,这是一个很好的学习和实践平台。通过这个项目,开发者...

    maven+hibernate

    标题 "maven+hibernate" 暗示我们讨论的是使用 Maven 作为构建工具,与 Hibernate 这一流行的对象关系映射(ORM)框架整合的项目。在Java开发中,Maven 和 Hibernate 是两个非常重要的组件。Maven 用于自动化项目的...

    SpringMVC+Hibernate+Spring整合实例

    通过Hibernate,开发者可以使用Java对象来操作数据库记录,而无需编写大量的SQL语句。Hibernate支持实体类、映射文件、HQL(Hibernate查询语言)等特性,使得数据操作更加便捷和高效。 Spring作为核心框架,提供...

    项目实践精解:基于Struts-Spring-Hibernate的Java应用开发

    这个项目实践精解深入探讨了如何使用这三个框架来构建实际的Java应用程序,旨在提升开发者在实际项目中的应用能力。 首先,Struts是一个开源的MVC(Model-View-Controller)框架,它主要负责处理Web应用的业务逻辑...

    使用Struts + DAO + Hibernate完成用户登陆

    在J2EE应用程序开发中,使用Struts、DAO(数据访问对象)模式和Hibernate框架的组合是一种常见的做法,尤其在构建MVC(模型-视图-控制器)架构的应用程序时。这个实例提供了一个完整的模板,展示了如何将这些技术...

    J2EE hibernate

    `合并文档必读.doc`可能是一个文档,指导读者如何将Hibernate、J2EE、Spring和Struts集成到一个项目中,可能包含了步骤、最佳实践和解决常见问题的方法。 在J2EE环境中使用Hibernate,开发者可以定义Java类来代表...

    Java Web 案例实践,基于(spring,spring mvc,hibernate)框架实现的

    本案例实践将深入探讨这三个框架的结合使用,帮助开发者理解如何在实际项目中整合它们。 首先,Spring框架是Java企业级应用的核心,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,简化了代码的管理和维护。...

    springMVC完美集成hibernate实例

    在IT行业中,Spring MVC和Hibernate是两个非常重要的框架,它们分别负责Web应用的模型-视图-控制器(MVC)...实践中,你还可以探索更多优化技巧,如使用Spring Data JPA简化DAO层,或者引入MyBatis作为另一种ORM选择。

    Struts2+hibernate项目实例

    在本项目中,Hibernate通过XML配置文件或注解方式定义实体类和数据库表之间的映射关系,使得开发者可以使用面向对象的方式操作数据库。例如,Student实体类对应数据库中的students表,通过SessionFactory创建Session...

Global site tag (gtag.js) - Google Analytics