开源组件的使用总结之一

开源的一些经验的一些积累:
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中会覆盖配置文件中的设置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值