hibernate的应用中一般总是将entity映射为强类型的java类,这为程序操纵带来很多便利,同时可以将大量动态过程隐蔽在对象包络之下。映射为java类的一个主要问题在于无法在程序运行时刻对于程序进行修改,而数据结构的局部修改几乎是无法避免的。hibernate3本身支持动态数据模型,它允许我们把entity映射为Map数据类型, 当数据结构发生变化的时候, 只需要修改hbm文件即可改变映射模型,而不需要修改java实体类代码.     在hbm定义文件中,如果我们不指定name属性,而是指定entity-name属性,则我们可以将entity映射为Map, 而不是一个java实体类 ...
  • 21:13
  • 浏览 (482)
  • 评论 (0)
  最近ruby语言的流行似乎再次引发了DSL(Domain Specific Language)讨论的热潮。从语法表现形式上看,通过对于ruby语言的深度hack, 充分挖掘ruby语言的某些语法特征,可以使得正常的ruby语句看起来比其他计算机语言更接近于人类的自然语言,某些人因此认定ruby语言是DSL的天然载体。但是在我看来,具体语言的语法表达形式对于DSL的核心价值而言并不是最关键的。   首先,DSL的核心在于高效的表达语义,而并不在于是否接近自然语言。接近于自然语言并不意味着更加domain, 因为自然语言也是一种通用语言,它未必能够比采用其他语法形式的语言更加有效的对domai ...
  • 22:41
  • 浏览 (662)
  • 评论 (0)
  CRUD(Create Read Update Delete)是一般应用程序中最基础的操作,但是用户的需求却很难直接映射到CRUD操作上。例如常见的需求如下: 1. 不同的业务处理处于不同状态的业务对象:     业务A处理状态为X的业务对象,而业务B处理状态为Y的业务对象 2. 业务对象处于不同状态的时候允许的操作不同:     状态处于X的业务对象允许操作U, 而状态处于Y的业务对象允许操作V 3. 不同的业务操作可能修改业务对象的不同属性:      操作U修改业务对象的属性P, 操作V修改业务对象的属性Q 4. 具有不同权限的人能够从事的业务不同:       角色R处理业务A, ...
  • 22:25
  • 浏览 (921)
  • 评论 (0)
canonical
搜索本博客
最近加入圈子
存档
最新评论