文章列表
AOP是什么(Aspect Oriented Programming)
AOP是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。
AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入到面向对象的软件系统中,从而实现了横切关注点的模块化。
AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
AOP能干什么,也是AOP带来的好处
1:降低模块的耦合度
2:使系统容易扩展
3 ...
启用@AspectJ支持
通过在你的Spring的配置中引入下列元素来启用Spring对@AspectJ的支持:
<aop:aspectj-autoproxy/>
声明一个方面
在application context中定义的任意带有一个@Aspect切面(拥有@Aspect注解)的bean都将被Spring自动识别并用于配置在Spring AOP。
配置如:
java代码:
<bean id="myAspect" class="org.xyz.NotVeryUsefulAspect">
< ...
通过<list/>、<set/>、<map/>及<props/>元素可以定义和设置与Java Collection类型对应List、Set、Map及Properties的值 ,示例如下:
java代码:
<bean id="moreComplexObject" class="example.ComplexObject">
<property name="adminEmails">
<props>
<prop key=&quo ...
IoC——Inversion of Control,控制反转
在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。
DI——Dependency Injection(依赖注入)
即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
依赖注入的目标并非为软件系统带来更多的功能,而是为了提升组件重用的概率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就 ...
认识Spring
Spring是什么
Spring是一种轻量级的、非侵入式的Java/JavaEE应用框架
Spring背景
Rod Johnson
《Expert One-on-One J2EE Design and Development》(2002)这本书的中文译本为《J2EE 设计开发编程指南》(2003)
半年后,一个新的Java Framework发布,同样出自Rod Johnson 的手笔,这自然引起了大家极大的兴趣,这就是SpringFramework。SpringFramework 实际上是《Expert One-on-One J2EE Desig ...
设计细颗粒度的持久类并且使用<component>来实现映射。
例如使用一个Address持久类来封装 street, suburb, state, postcode. 这将有利于代码重用和简化代码重构(refactoring)的工作。
对持久类声明标识符属性( identifier properties)。
Hibernate中标识符属性是可选的,不过有很多原因来说明你应该使用标识符属性。我们建议标识符应该是“人造”的(自动生成,不涉及业务含义)。
使用自然键(natural keys)标识
对所有的实体都标识出自然键,用<natural-id>进行映 ...
整体流程
1:通过configuration来读cfg.xml文件
2:得到SessionFactory 工厂
3:通过SessionFactory 工厂来创建Session实例
4:通过Session打开事务
5:通过session的api操作数据库
6:事务提交
7:关闭连接
说明:以下分方法描述的实现流程并不是Hibernate的完整实现流程,也不是Hibernate的完整实现顺序,只是描述了Hibernate实现这些方法的主干和基本方式,主要是用来理解这些方法背后都发生了些什么,如果需要详细完整的实现流程,请查阅Hibernate相应文档和源代码
...
可编程的配置方式-1
如果在配置cfg.xml的时候,不想在里面配置hbm.xml怎么办呢?可在程序里使用可编程的配置方式,也就是使用程序来指定在cfg.xml里面的配置信息,不推荐这种方式。如下:
Configuration cfg = new Configuration()
...
Hibernate本身没有事务的实现
Hibernate 直接使用 JDBC 连接和 JTA 资源,不添加任何附加锁定行为。也就是说你在Hibernate里面使用的事务要么是JDBC的事务,要么是JTA的事务。
Hibernate不锁定内存中的对象
你的应用程序会按照你的数据库事务的隔离级别规定的那样运作,真正对事务的实现和支持也依赖于数据库。
对于并发处理,Hibernate提供了乐观锁和悲观锁来进行并发处理
Hibernate对自动乐观并发控制提供版本管理,针对行级悲观锁定,Hibernate 也提供了辅助的(较小的)API,它使用了 SELECT FOR UPDATE ...
数据表之间的关系分为三类:一对一、一对多、多对多
一对一数据表(部门表 和 部门主管表)
一对多数据表(部门表 和 部门下的人员表)
多对多数据表(部门表 和 人员表)
根据相互寻找的关系又分:单向和双向
对象一对一 (双向)
java代码:
public class A {
private B b = null; }
public class B {
private A a = null; }
n对象一对多 (双向)
public class A {
private B b = null; }
public cl ...
1:瞬时(Transient) - 由new操作符创建,且尚未与Hibernate Session 关联的对象被认定为瞬时的。瞬时对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier)。 如果瞬时对象在程序中没有被引用,它会被垃圾回收器销毁 ...
第一部分:Hibernate入门Hibernate是什么 Hibernate是一个轻量级的ORMapping框架 ORMapping原理(Object Relational Mapping) ORMapping基本对应规则:1:类跟表相对应2:类的属性跟表的字段相对应3:类的实例与表中具体的一条记录相对应4:一个类可以对应多个表,一个表也可以对应对个类5:DB中的表可以没有主键,但是Object中必须设置主键字段6:DB中表与表之间的关系(如:外键)映射成为Object之间的关系 7:Object中属性的个数和名称可以和表中定义的字段个数和名称不一样ORMapping的基本实现方式 ...