多级查询在资产管理系统中的设计与实现毕业论文(编辑修改稿)内容摘要:
, Hibernate 的 Session 不同于 JSP 应用中的HttpSession。 当我们使用 Session 这个术语时,我们指的是 Hibernate 中的 Session,而将 HttpSession 对象称为用户 Session。 (2) SessionFactory 接口。 这里用到了一个设计模式 —— 工厂模式,用户程序从工厂类 SessionFactory 中取得 Session 的实例。 SessionFactory 并不是轻量级的。 实际上它的设计者的意图是让它能在整个应用中共享。 典型地来说,一个项目通常只需要一个 SessionFactory 就够了,但是当项目要操作多个数据库时,那就必须为每个数据库指定 一个 SessionFactory。 SessionFactory 在 Hibernate 中实际起到了一个缓冲区的作用,它缓冲了Hibernate 自动生成的 SQL 语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。 (3) Configuration 接口。 Configuration 接口对 Hibernate 进行配置、启动。 在 Hibernate 的启动过程中,Configuration 类的实例会定位映射文件的位置并读取有关配置,然后创建一个SessionFactory 对象。 (4) Transaction 接口。 Transaction 接口是对实际事务实现的一个抽象,这些实现包括 JDBC 的事务、JTA 中的 UserTransaction、甚至可以是 CORBA 事务。 Transaction 接口是一个可选的 API。 11 (5) Query 接口。 Query 接口让你方便地对数据库及持久对象进行查询,它经常被用来绑定查询参数、限制查询记录数量,并最后执行查询操作。 以上描述的 5 个核心接口几乎在任何实际开发中都会用到,通过这些接口,开发人员不仅可以存储和获得持久对象,并且能够进行事务控制。 其它重要 API 除了以上五个核心接口外,还有几个比较重要的接口: (1) Callback 接口。 当一些有用的事件发生时,例如持久对象的载入、存储、删除时, Callback 接口会通知 Hibernate 去接收一个通知消息。 一般而言, Callback 接口在用户程序中并不是必须的,但要在项目中创建审计日志时,可能会用到它。 (2) Types Type 在整个构架中是一个非常基础、有着强大功能的元素。 一个 Type 对象能将一个 Java 类型映射到数据库中一个表的字段中去(实质上,它可以映射到表的多个字段中去)。 持久类的所有属性都 对应一 个 type。 这种设计思想使 Hibernate有着高度的灵活性和扩展性。 Hibernate 内置很多 type 类型,几乎包括所有的 java 基本类型,例如、 、 byte[]和。 不仅如此, Hibernate 还支持用户自定义的 type,通过实现接口 UserType 和接口 CompositeUserType,可以加入自己的 type。 (3) 策略接口 Hibernate 与某些其它开源软件不同的还有一点 —— 高度的可 扩展性,这通过它的内置策略机制来实现。 当你感觉到 Hibernate 的某些功能不足,或者有某些缺陷时,可以开发一个自己的策略来替换它,而所要做的仅仅只是继承它的某个策略接口,然后实现新就可以了,以下是它的策略接口: ○ 1 主键生成( IdentifierGenerator 接口) ○ 2 本地 SQL 语言支持( Dialect 抽象类) ○ 3 缓冲机制( Cache 和 CacheProvider 接口) ○ 4 JDBC 连接管理( ConnectionProvider 接口) 12 ○ 5 事 务管理( TransactionFactory, Transaction 和 TransactionManagerLookup接口) ○ 6 ORM 策略( ClassPersister 接口) ○ 7 属性访问策略( PropertyAccessor 接口) ○ 8 代理对象的创建( ProxyFactory 接口) 映射机制 J2EE 框架 下的应用程序都是基于域模型的,在这种模型下,应用程序实现 复杂的业务逻辑和复杂的实体交互。 ORM 映射机制最适合使用在基于复杂的域 模型应用中,域模型越复杂,使用 Hibernate 所带来的好处越明显。 在域 模 型 的执行中, Hibernate 采用透明持久对对象 /关系进行持久化。 透明 表示在域模型的持久类和持久逻辑本身之间完全的关系分离,在持久逻辑中,持 久类完全不知道也不依赖于持久机制。 普通 Java 对象 POJO Hibernate的 ORM从编程模型上看就是把一个普通 Java对象 POJO(Plain Ordinary Java Object)映射为关系数据库中的表。 映射是用一个 XML文档 (XML document)来定义的。 这个映射文档被设计为易读的,并且可以手工修改。 映射 语言是以 Java为中心的,意味着映射是按照持久化类的定义来创建的,而非表 的定义。 一个 POJO很像一个 JavaBean,没有 EntityBean那样冗长的接口。 Hibernate 正是在使用 POJO的域模型中工作的。 一个 POJO声明了属性 (代表对象的状态 )、业务方法 (代表对象的行为 )和对属性的访问方法。 以一个 Course对象为例,简单说明如下 : public class Course implements Seiralizable ( public String courseName。 public int id。 public String getCourseName() (return。 ) 13 public void setCourseName(String name) (courseName = name。 ) public int getId() (return。 ) } Hibernate不要求持久对象实现 Seiralizable(序列化 )接口,但是当对象存储在HttpSession中或者用 RMI进行值传递时,序列化是必须的。 属性通常 作为实例变量与属性访问方法一起执行。 访问方法是用来检索实例变量的值和改变其值的方法,分别称为 geter和 seter方法。 Hibernate不要求访问方法声明为公有的,它可以很容易的使用私有访问方法来管理属性。 继承映射 最简单的类到数据库表的映射策略是“一个类一张表”。 这个方法确实听起来很简单,但是在遇到继承问题 的时候就不能有效的起作用了。 继承是面向对象结构中最明显的特征。 继承关系有三种不同的映射方法 : 1) 每个具体的类映射为一个表。 这跟前面讲的最简单的映射方法是一样的,一个类的 所有属性,包括从超类继承过来的属性,都一一映射为数据库表的列。 即 超类 superclass映射为一个表,子类 subclass:映射为单独的表,在数据库中,它们之间的关系通过外键 (Foreign Key)表示。 这种映射策略不需要任何 Hibernate的特殊映射声明,只需要把每一个类的映射包含在 class/class声明中,并且为每个 类定义一个表属性。 这种方法的主要问题是它不能很好的支持多态关系。 还有就是在这些表中,不同表的不同列属性有共同的语意,如子类继承超类的属性,这使关系的维护更复杂了。 例如对超类属性的改变会导致很多列的改变,这也使在子类上执行数据完整性约束更加困难。 2) 整个类层次关系映射为一个表。 作为对“一个类一个表”策略的替代,我们可以把整个类层次关系映射为一个表,这个表的列包括类层次关系中所有类的属性。 每一个具体的子类用特定的行来表示,它可以通过列 discriminator的值来识别,如下所示 :父类的映射增加一个discriminatorvalue属性,它的值用来标志父类,同时 增加 一 discriminator: 14 class name=superClass table=supertable discriminatorvalue=super discriminator column=colunmName type= Type / „„ 在子类的映射中也增加一个 discriminatorvalue属性,它的值用来标志该子 类 :discriminatorvalue的值在分别查询父类和子类时做查询 条件 : subclass name=subClass discriminatorvalue=sub / subclass / class 新增加的 discriminator列用来区分持久类,它不是类的属性,由 Hibernate内部使用,它的值,即 discriminatorvalue。 给出的值会被 Hibernate自动设置和检索。 整个层次关系,超类和子类都被映射在了同一张表中,超类用 class声明,子类用subclass声明,当然,子类中又可以包括子类。 这种映射策略进行多态 查询时可以一次执行,在分别进行超类和子类查询时,可以用 discriminator列的值做条件,因为超类和子类有不同的 discriminator值。 3) 子类和超类映射为不同的表。 即每一个在持久关系中定义的子类都映射为单独的一个表。 与第一种策略不同的是,子类对应的表只包括非继承属性,即每一个属性都是子类特有的。 每一个子类的表有一个主键与超类相关联。 映射文件中子类的声明用 joinedsubclass表示,嵌套在 class中,并且要声明一个主键 key。 这种策略的主要好处是关系模型完全规格化,完整 性约束的定义也直截了当。 对特定子类的多态联结是通过指向该子类的表的外键来表示的。 Hibernate在执行多态查询的时候,自动把超类和子类的表外联接 (outer join)查询,如果只限制在对子类查询时, Hibernate使用内联接 (inner join)。 根据经验来看,复杂的类层次执行效率让人无法接受,查询需要联接多个表或者许多顺序读操作。 因此,针对应用程序中的类层次,必须选择一种合适的映 射策略或者对映射策略做一个适当的组合。 一般有以下原则: 在不要求多态关联和查询时,倾向于使用一个类一个表的映射策略; 如果要15 使用多态关联并且子类中声明的属性相对较少,则倾向于使用一个类层次一个表 的映射策略 :如果要求多态关联和查询,并且子类声明的属性比较多,则使用一个子类一个表的映射策略。 查询机制 查询方法 检索持久对象是 Hibernate的另一项重要功能。 Hibernate提供了以下几种从数据库中得到对象的方法 : 1)通过对对象图的导航,从一个已经装载的对象开始,由它的属性访问方法来访问相关联的对象。 当用户导航对象图的时候,如果 Session处于打开状态,Hibernate会自动装载或者预装 载对象图中的结点。 2)通过标志符检索。 当已知对象的唯一标志符时,这种方法是最方便性能最好的。 用标志符检索对象可以用 loads和 geto两种方法。 3)使用 Hibernate提供的查询语言 (HQL),它是一个完全面向对象的查询语言。 HQL是 SQL的一个面向对象的方言,它与 ODMG OQL(对象数据库查询语言 )和EJBQL有非常类似,但是与 OQL不同的是它适用于使用 SQL的数据库,并且比EJBQL功能更强大更优雅。 HQL不是一个数据操纵语言,它只用来检索对象,而不是更新删除数据。 对象状态的同步是持久化管 理器的工作而不是开发者的工作。 HQL有以下高级特性 : 把数据约束应用到关联对象的属性 : 在事务范围内不装载实体本身而检索实体的属性,这也被称为报告查 (report query)或更确切的叫做注射 (projection); 对查询结果排序; 对查询结果分页; 通过 groupby, having或者 sum, max等函数对结果集进行分类; 当检索一行多对象时使用外联接; 调用用户定义的 SQL函数; 子查询 (嵌套查询 )。 4)使用 Hibernate提供的 Criteria API查询。 Criteria API提供了 一个类型安全的、16 面向对象的方法来执行查询,而不需要字符串操纵。 它包括了基于实例对象的查询。 5) 使用本地 SQL语言查询 .Hibernate支持 16种数据库方言,几乎所有流行的数据库它都支持,因此,用户也可以直接使用自己熟悉的数据库语言进行查询。 在实际的 Hibernate应用程序中,各种检索方法可以联合使用,每一种检索方法可以使用不同的数据获取策略。 这样可以为应用程序中的用例找到最好的检索方法和数据获取策略,同时最小化 SQL查询语句的数量,获得最佳性能 . 在传统的关系数据访问中,利用内联接和外联接检索关联 实体,可以用一条SQL语句获取特定计算要求的数据。 ORM中最难的问题之一是为关系。多级查询在资产管理系统中的设计与实现毕业论文(编辑修改稿)
相关推荐
地式多绳摩擦提升机。 1977年我国第一台双绳落地式矿井提升机诞生。 随后又由上海冶金矿山机械厂设计并生产了3m四绳落地式多绳摩擦提升机。 此后,塔式和落地式多绳摩擦提升机广泛被矿山采用。 钢丝绳是矿井提升中的重要组成部分,同时也是刚才消耗量最大的物品之一。 为了能够减少资源的浪费,而且还要满足安全生产的工作情况;近年来我国钢丝绳全国各地的钢丝绳生产厂家,在品种和结构上下了不少功夫。
也可能对项目市场占有率带来一定影响。 自然灾害风险 降雨量、无霜期、气温、风力、供灌溉用水能力以及不可抗拒的自然灾害造成的产饲草料产量下降,甚至直接危害羊本身。 疫情 风险 特别是重大动物传染病。 第一,造成羊的直接死亡;第二,扑杀造成消毒等增加经济费用;第三,造成商品羊及羊肉产品不准销售。 立足成熟客户 第一章 总论 25 一是扶持示范户饲养,或采用寄养联合体的方式,带动农牧民脱贫致富
毛、羔皮及适应性强和小尾寒羊生长发育快、多胎多产的优良特性,遗传性稳定,不论自繁或杂交后代,在体形、被毛、产肉和繁殖性能方面都表现得很优越,也是培育肉羊新品种宝贵的母本材料。 推广利用 多胎肉羊的上述优点使其 10 多年来备受养殖者青睐,同时由于其价格比热销于全国各地的小尾寒羊低 1/3~1/2,因此甚至是小尾寒羊主产区的山东、河南部分群众也纷至沓来抢购多胎肉羊
式注射机参数如表 22 所示 表 22 XSZY1000卧式注射机的参数 项目 XSZY1000 拉杆内间距 /mm 650550 结构形式 卧 移模行程 /mm 700 青岛理工大学琴岛学院本科毕 业设计论文 9 理论注射容量 /cm3 1000 最大模具厚度 /mm 700 螺杆直径 /mm 85 最小模具厚度 /mm 300 注射压力 /MPa 121 锁模形式 两次动作液压式 注射速率
气流顺利通过,是很好的过滤材料。 惯性原理 : 大粒子在气流中做惯性运动,气流遇到屏障会绕过去,而粒子因为惯性保持原来的方向撞到屏障上,从而达到过滤的效果,粒子越大,惯性越大,撞击屏障的可能性越大,过滤效果越好。 扩散原理 : 较小的粒子做的是无规则的布朗运动。 粒子越小,无规则运动越激烈,撞击屏障的机会越大,过滤效果越好。 影响除尘效率的因素 : 由惯性原理和和扩散原理可知
混凝土应力 应变关系曲线 图 C41 混凝土应力 应变关系曲线 图 C42 混凝土应力 应变关系曲线 图 C43 混凝土应力 应变关系曲线 图 C44 混凝土应力 应变关系曲线 图 C45 混凝土应力 应变关系曲线 图 C46 混凝土应力 应变关系曲线 16 图 C47 混凝土应力 应变关系曲线 图 C48 混凝土应力 应变关系曲线 图 C49 混凝土应力 应变关系曲 线 图 C50 混凝土应力