`
wangyugod
  • 浏览: 18907 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

持久层开发需要注意的一些地方

    博客分类:
  • Java
阅读更多
ORM时注意事项
Load time

使用lazy load, load data as late as possible

Load more data than needed
1) 设计domain object(在ORM中也可以说是一张数据表)不要添加太多的字段,这样load domain object时候会读出太多无用字段,影响效率,尽量遵循数据库范式, 建立Aggregate关系。
2)在读取数据时,在数据量大的时候,不要全部读取,只读取所需字段。

数据库连接是数据库中开销最大的地方,需谨慎使用
尽可能使用连接池来进行处理,在Hibernate中就是这样使用的,有一个并发连接数,但要注意的是在生产环境下不要使用Hibernate自带的连接池,要使用第三方池如c3p0.

数据分析
数据生命周期分析

分析数据是只读得还是可修改的,数据的访问及更新频率,根据这些来制定数据访问策略,如制定缓存等等

数据访问模式分析
了解数据是怎样应用的可以帮助优化数据的读取策略,如根据应用在页面上的呈现可以来制定fetchsize等。


查询模式分析
在同一个连接池中使用short-running查询和long-running reporting查询会给用户带来不好的体验,因为long-running reporting查询会长时间占用连接,因此short-running查询始终获取不到connection而被饿死。针对这种方式,使用两个连接池来处理这两种不同的查询类型。


数据访问测试
1. 使用真实、规范的数据进行测试,并在测试时不要局限于相同的数据
2. 并发压力测试是必需的

分享到:
评论
2 楼 wangyugod 2009-01-07  
在大数据量的情况下,针对这种情况只能直接select所需字段,以数组形式返回;但是相信如果设计得当,一个domain object中不会有过多的字段,总有一部分是可以封装成另外一个object的,然后使用lazy load就可以解决这种问题
1 楼 Dony 2009-01-07  
wangyugod 写道
ORM时注意事项
Load time

使用lazy load, load data as late as possible

Load more data than needed
1) 设计domain object(在ORM中也可以说是一张数据表)不要添加太多的字段,这样load domain object时候会读出太多无用字段,影响效率,尽量遵循数据库范式, 建立Aggregate关系。
2)在读取数据时,在数据量大的时候,不要全部读取,只读取所需字段。



同意楼主的分析, 但是不是过于理想化了?

其他的orm没怎么用; hibernate中, "只读取所需字段"要么建立很多的vo, 要么po中写很多的constructor(这种情况下没有select的字段即使不会造成对数据库的压力, 但在内存中也会有初始值, 浪费啊.)

貌似没有什么完美的解决之道.

相关推荐

    用Hibernate和Spring开发持久层

    在IT行业中,开发持久层是构建企业级应用的关键部分,它负责将应用程序的数据与数据库进行交互。本主题聚焦于如何利用Hibernate和Spring框架来高效地实现这一目标。Hibernate是一个强大的对象关系映射(ORM)框架,...

    银行账户管理系统-java开发

    以上只是银行账户管理系统中的一些基本知识点,实际开发过程中还会涉及更多如性能优化、日志记录、监控报警等复杂问题。在Java开发中,良好的代码组织和设计原则同样重要,以确保系统的可维护性和扩展性。

    spring、mybatis开发jar包

    接下来,MyBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了代码的可读性和可维护性。MyBatis的jar包主要包括: 1. mybatis:MyBatis的主要库,包含SQL映射框架的核心功能。 2. mybatis-spring:...

    基于安卓系统APP开发-班课手机APP设计与开发+毕业论文

    - 权限管理:考虑到安卓的权限系统,需要在合适的地方请求必要的用户权限,如访问联系人、读写存储等。 - 性能优化:合理使用内存,避免内存泄漏,确保应用流畅运行。 - 测试:进行单元测试、集成测试和性能测试,...

    asp.net搭建mybatis开发环境

    而MyBatis作为Java领域广泛应用的持久层框架,其实现灵活,易于理解,也逐渐被.NET社区所接受。本篇文章将详细讲解如何在ASP.NET项目中搭建MyBatis(即.NET版的IBatisNet)的开发环境,带你走出那些可能误导你的误区...

    基于springboot+vue的地方美食分享系统源码.zip

    MyBatis是一个轻量级的持久层框架,允许开发者直接编写SQL语句,提供更高的灵活性;而JPA(Java Persistence API)则是Java标准的ORM(对象关系映射)规范,可以简化数据库操作,提供面向对象的编程方式。具体本系统...

    Slife快速开发框架 v1.0-源码.zip

    其核心特性可能包括模块化设计、数据持久层支持、前端界面组件、以及丰富的API接口等。 在源码中,我们可以预期找到以下几个关键部分: 1. **框架核心**:这是框架的基础,通常包括一系列基础服务和工具,如依赖...

    使用了2年Struts开发项目后的总结

    在我两年的Struts开发经验中,我发现它在处理业务逻辑、控制流程以及与视图层交互方面表现出色,但也有一些挑战和需要注意的地方。 首先,Struts提供了强大的动作调度机制,通过Action类来处理HTTP请求。每个Action...

    基于springboot+vue的地方美食分享网站.zip

    在开发过程中,开发者需要注意前后端的通信协议(如JSON格式)、数据库的设计与优化、用户体验的提升以及微信小程序的合规性等问题。同时,良好的代码组织结构和版本控制也是确保项目成功的关键。

    后台开发引论-从架构演变的角度

    后台开发通常涉及多个层次,包括但不限于数据持久化、业务逻辑处理、API服务、安全性、性能优化等。 架构演变涉及的范围是软件架构随时间的变化和发展。随着互联网技术的进步和业务需求的演进,软件架构也在不断地...

    spring-mybatis-spring-2.1.1.zip

    3.4 使用@Autowired注解:在需要使用MyBatis的地方,使用Spring的@Autowired注解注入Mapper接口,Spring会自动查找对应的Mapper并注入。 四、资源包下载 为了方便开发者进行Spring与MyBatis的整合,提供了名为...

    mybatis开发用到的jar包(mybatis-3.2.5.jar、mybatis-spring-1.2.2.jar)

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在Java应用中,MyBatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis可以使用简单的XML或注解进行配置和原始...

    spring整合Mybatis

    Spring作为一款强大的轻量级框架,提供了丰富的功能,包括依赖注入、AOP(面向切面编程)等,而Mybatis则是一款优秀的持久层框架,专注于SQL的编写与执行。将两者结合,可以充分利用各自的优点,提高开发效率,降低...

    Hibernate介绍

    - 在大型项目中,特别是在持久层关系映射非常复杂的情况下,Hibernate能够显著提高开发效率。 - 如果希望减少与数据库相关的代码量,并希望实现数据库类型的无缝切换,则Hibernate是一个很好的选择。 - 对于需要高...

    hibernate教程 in action

    虽然Hibernate在很多场景下都能发挥出色的作用,但也有一些需要注意的地方: - **性能敏感的场景**:在对性能要求非常高的场景下,直接使用SQL可能会获得更好的性能。 - **复杂查询**:对于非常复杂的查询逻辑,...

    Activiti学习文档(一)之整合SSH框架开发

    - 在需要触发流程的地方,调用Activiti API启动流程实例,或者根据任务ID完成任务。 - 利用Hibernate进行数据交互,例如更新流程实例中的变量。 6. **注意事项**: - 整合过程中要注意事务管理的设置,确保流程...

    struts2.3+spring4.3+hibernate5.4.rar

    在Struts2和Spring框架中,Hibernate可以作为数据持久层,简化数据库操作,使得业务逻辑和数据存储之间的耦合度降低。 当这三者结合时,通常的实现方式是:Struts2作为前端控制器,负责接收HTTP请求并调用业务逻辑...

    ssm逆向工具

    3. **MyBatis**:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和原始映射,将...

Global site tag (gtag.js) - Google Analytics