开源的一些经验的一些积累:
spring:
IOC容器,帮你初始化一些bean,关联这些bean之间的依赖,管理这些bean。
在实际项目中使用的:初始化一些配置参数,集成其他开源项目组件,自己编写的组件等。
AOP:很少直接使用,但是spring里面的声明性事务就是使用这个方式实现的。
声明性事务:一般来说,j2ee系统中,有dao层,service层,dao层主要是负责持久化任务,service层作为业务逻辑的处理层,同时事务也会放到这一层。当然也可以再次分层,既事务控制的service层作为事务控制和部分业务逻辑处理,然后再在这个层之上建立一个更高层次的业务逻辑层。
PO VS VO
在一些系统中,需要做PO,Vo的转换,再这个转换的过程中有很多方式,比如克隆技术,这是使用java自身提供的拷贝技术,还有比如利用反射,javabean的一些特性实现属性拷贝技术(apache的开源组建)。还设计到一些浅拷贝 深拷贝的问题。
hibernate:
对象关系数据库之间的映射O/R mapping
让我们操作的不在是字段,行,而是我们定义好的对象和相应见名知意的属性。
同时屏蔽不同数据库之间的差异,能够以最低成本的迁移到不同数据库下工作。
延迟加载:
非延迟加载:太方便了,但是极大的影响系统的响应性能。
延迟加载:这里的核心就是在session没有关闭之前去取相关对象才能实现按需获得,一旦离开这个session环境就不能再去取得你想要的关联对象了
延迟加载--opensessionfilterinview 这是hibernate提供的一个知道视图输出结束才关闭session的操作方式,这样对开发确实非常方便,但是对于大型系统很难做好这个性能平衡的处理。
延迟加载--fetch为select方式 能够做到按需得到关联对象,对于单个对象,有多少关联兑现就会再次查询多少次,对于列表,就会产生N+1的问题。
延迟加载--fetch为join方式,这种就是在得到对象的同时,如果使用连接查询,相关联的对象会同时查询出来,这样避免的与数据库的多次交互。我个人比较推崇使用这种方式,但是一个前提是,你确实需要这些对象的关联对象,如果一些方式不需要这些关联对象,你可以大量“重载”这类方法。(重载不完全准确)。理由就是:既然你需要这些东西,就让他一次取出来(多次查询,时间自然长很多,严重影响性能),对于不同的情况(需要的关联对象不同)使用多个方法区分,当然这种方式的弊端就是大量近似的方法。
延迟加载--fetch的设置可以是在配置文件中,也可以是在hql中,hql中会覆盖配置文件中的设置。
分享到:
相关推荐
其美观的界面和易用性使其成为开发者常选的组件之一。 3. **SlidingMenu**:适用于需要侧滑菜单效果的应用,它依赖于ActionBarSherlock。虽然使用时需要解决一些代码兼容性问题,但一旦设置正确,可以为用户提供...
- **依赖注入 (IoC)**:Spring的核心特性之一是它的IoC容器,它可以自动管理对象之间的依赖关系,降低了组件间的耦合度。 - **面向切面编程 (AOP)**:Spring提供了一个强大的AOP框架,支持声明式的事务管理和自定义...
总结来说,开源治理是当前IT领域的一大挑战,需要企业建立健全的开源治理体系,以应对日益复杂的开源安全和法律问题,保障软件的质量和合规性,同时也促进开源生态的健康持续发展。通过有效的治理实践,可以降低修复...
总结来说,物联网开源组件的安全是一个多维度、复杂且持续进化的议题。对Node-RED这样的物联网平台进行白盒审计,可以发现和修复安全漏洞,提高物联网系统的整体安全性。同时,随着AI技术的不断进步,其在安全防护中...
【svn管理开源工具】 在IT行业中,版本控制系统是软件开发不可或缺的一部分,它们帮助开发者跟踪代码的变更、协作和管理项目。...在日常开发工作中,了解并熟练使用TortoiseSVN是每个开发者必备的技能之一。
GPL是最具影响力的开源协议之一,它要求任何使用、修改或分发基于GPL的软件的衍生作品都必须以GPL许可证发布,从而确保了代码的开放性和可访问性。这一特性被称为“传染性”,意味着任何与GPL软件结合的代码也必须...
BitGo是区块链领域的领军企业之一,它的核心服务包括企业级的数字资产托管解决方案,支持多种加密货币,如比特币(Bitcoin)、以太坊(Ethereum)等。通过其JavaScript SDK,开发者可以方便地在Web应用中实现与BitGo...
总结来说,openEA定向开源计划V4.01是一个全面的开源生态系统,涵盖了技术开发、资源共享、知识传播和社区互动等多个层面,旨在推动中国乃至全球的企业管理应用开源技术的发展,构建一个强大的开源社区生态。...
1. **建立政策与流程**:明确开源软件的使用规范,设定审批流程,确保所有使用的开源组件符合企业安全标准。 2. **使用工具进行自动化扫描**:利用开源扫描工具(如 OWASP Dependency Check)定期检查项目中的开源...
Hadoop 是 Apache 基金会的分布式计算平台,是当今最重要的开源项目之一。Hadoop 不仅是一个用于存储的分布式文件系统,而是一个设计用来在由通用计算设备组成的大型集群上执行分布式应用的框架。Hadoop 已经成为...
3. 混合许可证:当一个项目使用了多个开源组件时,需确保所有许可证之间的兼容性,避免冲突。 4. 法律咨询:在处理复杂的开源许可证问题时,可能需要法律专业人士的帮助。 四、开源许可证与商业策略 1. 开源软件...
总结来说,ReportView开源设计器是一款强大且易用的报表设计解决方案,它的开源特性为开发者提供了更大的灵活性和控制权。通过深入研究设计文档、理解源代码以及使用安装程序,开发者不仅可以创建出满足业务需求的...
因此,作者推荐了几个开源的时间组件,并提到自己也对某些开源组件进行了修改以适应特定场景。 文章提到的Bootstrap时间组件不仅效果多样,而且可以自定义日期格式,支持中文环境,并且能够适应各种设备,如手机和...
**ICS (Indy Internet Components)** 是...总结,ICS Delphi 组件是 Delphi 和 C++Builder 开发者构建网络应用程序的强大工具,提供了全面的网络协议支持,具有高度的灵活性和可扩展性,是开发网络应用的首选组件之一。
Spring MVC是Spring框架的模块之一,它遵循模型-视图-控制器(MVC)设计模式,用来开发Web应用程序。另外,Spring的ORM模块提供了集成多种ORM解决方案(如Hibernate, JDO, iBatis)的能力,使得开发者能够利用这些...
SSH面试题总结涵盖了三个主要的开源框架:Struts、Spring和Hibernate。这些框架在Java Web开发中起着至关重要的作用,帮助开发者更高效地管理和组织应用程序的各个层面。 首先,让我们来看看Hibernate,这是一个...
总结来说,开源可嵌入在线降价编辑器是一款基于JavaScript的组件,主要特点在于其Markdown支持和可嵌入性。通过简单的集成,开发者可以将它无缝融入到自己的Web应用中,为用户提供直观且功能丰富的文本编辑体验。而...
Tomcat是一个开源的Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范,常用于开发和测试Java Web应用。 这些框架和项目不仅在开发中起到关键作用,也是面试中常见的考察点,了解和掌握它们可以帮助...
这款开源论坛客户端的独特之处在于它利用了GitHub仓库作为其核心的数据源,提供了一个全新的交流平台。Flutter框架的使用为这款应用带来了诸多优势,使得开发者可以高效、快速地构建出跨平台的应用程序。 【Flutter...