作者:
Flyingis
许多软件设计的思维都源于生活的方方面面,可能存在某些设计思想并非受平时生活所启迪,但它们面临的情况却如此相象。软件设计原本就是生活的一部分,软件设计的“灵活”与“方便”(或“简便”)即是世界万物的一个共同点。
Hibernate作为流行的企业应用和关系数据库之间的持久化中间件,受到越来越多的关注。虽然使用Hibernate可以使得项目易于维护,帮助开发人员更好地处理复杂关系模型,提供了很强的方便性,但却失去了JDBC原有的灵活性。如何在“灵活”与“方便”之间取舍、平衡显得重要起来。
不久前
江南白衣的一篇文章
ORM透明持久化方案面对的共同困境道出了现在ORM不尽如人意的地方,除了网上,还有书本的前言等对Hibernate的众多赞美之词外,现在讨论它呆板、配置繁琐的声音也逐渐多了起来,最热闹的就是前段时间
Ruby on Rails引起J2EE阵营的骚动。个人对Java研究尚浅,对Hibernate有一些使用心得,下面所列出的不一定是Hibernate本身的缺陷,不足之处希望大家拍砖指出。
1. 提取表单中字典Value的不便。
字典一般由ID和NAME两个字段组成,其ID号存储于数据库其他表中,当查询这些表信息时,Hibernate以List或Set形式返回的结果,没有办法将ID号显示为对应的NAME。在JDBC中,可以直接通过Map来存储字典,通过map.getValue()来返回字典的值。
2. Hibernate内置映射类型复杂化
在开发过程中,时常会查找Hibernate映射类型--Java类型--标准SQL类型之间的关系。繁杂之处体现在两方面,一是各种数据库的数据类型和标准SQL之间会有一定的出入,二是Hibernate映射类型虽然大部分和Java类型相同,但也存在比较晦涩的地方,例如character类型对应Java的char / java.lang.Character / java.lang.String,text对应着Java的java.lang.String。
3. ID规定化生成
Hibernate中内置标识符生成器给表单ID自动生成提供了方便,但却不能自定义各种ID形式。开发过程中,有时需要特定的ID号来区分各种字典,例如字典1的ID号为1A,2A……,字典2的ID号为1B,2B……,当这些ID号存储在表单中时,可以方便开发人员在数据库中查找各表单存储各类字典数据的情况,方便调试,但使用Hibernate生成器就失去了这种灵活性。
Hibernate的不足网上已有很多讨论,以上只是个人增加的几点体会。即使这样,Hibernate仍是一款优秀的持久层插件,只是“灵活”的背后隐藏着“复杂”,“方便”的背后隐藏着“不便”,如何取舍与平衡,还是看实际需要吧。
分享到:
相关推荐
而Hibernate则是一个优秀的对象关系映射(ORM)框架,能够方便地将数据库操作与业务逻辑解耦。当这两个框架结合使用时,可以构建出高效、灵活且易于维护的Java应用。 首先,我们需要理解Spring如何管理和控制...
Hibernate提供了CRUD(Create, Read, Update, Delete)操作,通过save()、get()、update()、delete()等方法,可以方便地进行数据的增删改查。此外,还有Criteria API和HQL(Hibernate Query Language)用于复杂查询...
标题"hibernate的jar包"表明了这个压缩包包含的是与Hibernate相关的Java类库。Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作,简化了Java应用程序与数据库之间...
这个“hibernate3全部jar包:hibernate3.jar.zip”包含了所有必要的库文件,方便用户一次性下载并使用Hibernate3。 Hibernate的核心功能包括对象关系映射(ORM),它允许开发人员将数据库表映射为Java类,而这些类...
Hibernate通过配置文件可以方便地处理这些关联,如`@OneToMany`和`@ManyToOne`注解。 9. **懒加载和立即加载** Hibernate支持懒加载和立即加载策略,对于一对多或多对一的关系,可以决定是在加载父对象时同时加载...
同时,4.0版本引入了新的查询语言HQL(Hibernate Query Language)和Criteria API,提供了更加灵活和强大的查询机制。 接下来是Hibernate5.2版本。这个版本进一步提升了性能和稳定性,对JPA 2.1规范进行了兼容,...
总的来说,Hibernate 作为一款强大的 ORM 工具,极大地方便了 Java 应用程序与关系型数据库的交互。通过简化数据持久化的复杂性,开发者可以更加专注于业务逻辑,提高开发效率。同时,Hibernate 的轻量级特性和跨...
7. **HQL和Criteria查询**:Hibernate提供了HQL(Hibernate Query Language)和Criteria API,它们是面向对象的查询语言,用于替代SQL,更加灵活且与数据库无关。 8. **事务管理**:由于数据库操作通常涉及事务,...
Hibernate-osgi模块使得Hibernate可以在OSGi环境中运行,方便在大型分布式系统中进行组件化开发和部署。 5. **Hibernate空间支持(hibernate-spatial)** Hibernate-spatial扩展了Hibernate,支持地理空间数据类型...
3. 支持事务:Hibernate内置了对JTA和JTASessionContext的支持,方便在分布式环境中进行事务管理。 4. 第二级缓存:通过配置缓存插件(如Ehcache或Infinispan),提高数据读取效率。 5. 异常处理:Hibernate将SQL...
总的来说,Hibernate通过其丰富的API和灵活的配置,极大地简化了Java应用程序与数据库之间的交互,提高了开发效率和代码的可维护性。理解并熟练掌握Hibernate的内容大纲,对于面试和实际项目开发都至关重要。
Hibernate是一个开源的对象关系映射(ORM)框架,它为Java语言提供了一种方便的工具来操作关系型数据库。Hibernate通过将Java程序中的POJO(普通旧Java对象)映射到数据库表,使得开发者可以使用面向对象的方式来操作...
- 数据库驱动:例如 MySQL、Oracle 或 PostgreSQL 的驱动,使得 Hibernate 能够与各种数据库系统通信。 - Commons Logging:提供日志服务,允许开发者选择自己喜欢的日志框架,如 Log4j 或 java.util.logging。 -...
这份文档分为多个章节,深入讲解了 Hibernate 的核心概念、配置、实体映射、查询语言、缓存策略以及与 Spring 框架的集成等关键内容。 一、Hibernate 核心概念 Hibernate 提供了一个数据持久化的框架,将 Java 对象...
总的来说,Hibernate 3.1提供了一套完整的解决方案,让开发者能够方便地将Java对象与数据库表进行绑定,降低了数据库操作的复杂性。通过理解其核心库、映射机制、查询语言、事务管理和对象状态管理,开发者可以更...
Hibernate 4 是一款广泛应用的Java持久化框架,它简化了数据库与...总之,"hibernate4全套jar"提供了完整Hibernate 4框架所需的所有依赖,让开发者能够在项目中快速集成和使用Hibernate,实现高效、灵活的数据库操作。
“commons-logging.jar和cglib.jar包与Spring中的包重复”,这说明了两个问题:首先,Hibernate 3可能依赖于Apache Commons Logging库(commons-logging.jar),这是一个提供灵活的日志记录接口的库,使得开发者可以...
在Eclipse中配置和使用Hibernate非常方便。本教程将引导读者设置Eclipse开发环境,安装Hibernate插件,创建项目,并配置Hibernate的必要属性,如数据库连接信息。 3. **pom.xml** Maven是Java项目管理的重要工具...
通过Spatial模块,开发者可以方便地将地理信息与业务数据结合,实现复杂的地理位置查询。 五、Optional接口的使用 在Java 8中引入的Optional接口,旨在解决null引用的问题,提升代码的可读性和安全性。Hibernate ...
通过Hibernate,开发者可以将数据库操作与业务逻辑解耦,使得代码更加面向对象,提高了开发效率。本文将深入探讨Hibernate的工作机制和原理。 1. **对象关系映射(ORM)** Hibernate的核心是ORM,它允许程序员用...