自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 利用PL/SQL Developer进行数据收集(基础版)

在PL/SQL Developer工具中,可以进行简单的数据收集。打开PL/SQL Developer的测试窗口,点击Create Profiler report按钮。然后再点击编译按钮即可,注意:这种方式不支持debug模式。然偶出现如下窗口,会出现一些有用的信息,如total time。

2011-11-10 11:34:24 664 1

原创 关于硬解析和软解析

游标解析过程(1)包含VPD约束条件--如果使用了虚拟私有数据库,并且被解析的SQL语句中引用的某张表激活了它的话,安全策略生成的约束条件就会被添加到WHERE语句中。(2)语法语义以及访问权限检查(3)保存父游标--不存在共享的父游标,将在库缓存中分配一些内存,将父游标保存进去(4)逻辑优化--通过优化手段生成等价意义的SQL语句,同时可选择的执行计划数量与搜索空间都会增长(

2011-11-04 10:31:22 1447

转载 WebService CXF学习(高级篇3):WS-Security

这一节我们来探讨一下WebService安全问题,如果所有系统都运行在一个封闭的局域网内,那么可以不考虑网络攻击,拒绝服务,消息篡改,窃取等问题。但通常情况都接入互联网,那么我就得考虑信息安全问题,像前面那样直接将消息裸传,肯定不行。那么,我们就得给消息加密。CXF可以结合WSS4J来对消息安全进行管理,可以使用令牌,X.509认证对消息头或内容进行加密。这节我只对令牌加密做一个简单的描述,我们还以Demo的形式来讲解一下。 这个Demo是在CXF+Spring+Hibernate的基础修

2010-11-02 10:06:00 2337

转载 WebService CXF学习(高级篇2):CXF+Spring+Hibernate

<br />前一节仅仅只讲了与Spring整合,没有涉及到数据库,而且是直接将Java象传递到服务端。这一节我起到一个回顾前面章节的作用。用在客户端运用JABX将JAVA对象编组成XML文件,在客户端将XML解组成JAVA并存入数据库。下面我们就着手开发这个Demo: <br />    服务端开发 <br />    第一步,编写数据资源层相关接口 <br />    DAO编写: <br />   Java代码 public interface HibernateDao {            p

2010-11-02 09:57:00 3346 3

转载 WebService CXF学习(高级篇1):整合Spring框架

<br /> 通过前面两节的讲解,相信你对CXF框架开始有一些认识了。在当今项目开发中,Spring框架基上都用到过,那么它怎么与CXF结合呢,这就是我们这一间要讲的内容。好了,闲话少说。 <br />    首先,在前面基础上再导入几个spring要用到的几个.jar包: <br />    spring-core.jar <br />    spring-jdbc.jar <br />    spring-context.jar <br />    spring-orm.jar <br />    sp

2010-11-02 09:43:00 1955

转载 WebService CXF学习(进阶篇4):JAXB剖析

<br />前面几节我们讲解对象传递,但是通常情况下我们不直接传对象,因为直接传递对象安全性差,而且暴露了实体对象。所以我们选择传递XML文件,当然也可以传递JSON对象。这节我只针对传递XML,那么JAVA绑定成XML,服务端将XML解析成Java对象有什么工具可用吗,其实这样的工具多的是。这里我选择一个比较简单的JAXB工具来讲解一下。 <br />    JAXB(Java Architecture for XML Binding)提供了一个快速而方便的方式绑定XML Schemas和java,使ja

2010-11-02 09:21:00 1787

转载 WebService CXF学习(进阶篇3):对象传递

<br />前面几节都是讲一些理论知识,现在又用一个例子来说明一下,这一节我们就CXF框架对象传递进行讲解。 <br />    第一步:创建传输对象Customer <br />Java代码    @XmlRootElement(name="Customer")     @XmlAccessorType(XmlAccessType.FIELD)     @XmlType(propOrder = {"name","age"})     public class Customer {    private i

2010-11-02 09:12:00 2336

转载 WebService CXF学习(进阶篇2):JAX-WS讲解

<br />JAX-WS规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。 <br />  在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。 <br />  在服务器端,用户只需要通过Java语言

2010-11-02 08:59:00 2072

转载 WebService CXF学习(进阶篇1):SOAP讲解

<br />    SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。或者更简单地说:SOAP 是用于访问网络服务的协议。 <br />    您应当具备的基础知识 <br />    在继续学习之前,您需要对下面的知识有基本的了解: <br />        * XML <br />        * XML 命名空间 <br />    <br />Why SOAP? <br />    对于应用程序开发来说,使程序之间进行因特网通信是很重要的。 <br />    目

2010-11-02 08:27:00 7979

转载 WebService CXF学习(入门篇3):WSDL描述

<br />   由于网上有很多相关这方面的资料,在这里我就转载http://www.ibm.com/developerworks/cn/webservices/ws-wsdl/index.html一篇,不再重新讲述了。 <br />    本文初步介绍了Web Service 'stack'中对于Web服务即时装配,自动集成起着关键作用的WSDL规范,首先介绍了WSDL的作用和意义,其次对WSDL文档的结构作出概要地介绍,对每个元素的作用作了探讨,分析了其开放和复用的体系设计的思想,最后通过一个实例详细说

2010-11-01 16:29:00 1866

转载 WebService CXF学习(入门篇2):HelloWorld

<br />  理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解: <br />   首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/ <br />   新建一个Java Project,导入cxf常用.jar包 <br />Java代码 commons-logging-1.1.1.jar  geronimo-activation_1.1_spec-1.0.2.jar 

2010-11-01 14:06:00 1450

转载 WebService CXF学习(入门篇1):CXF由来

<br />WebService介绍 <br />   WebService让一个程序可以透明地调用互联网程序,不用管具体的实现细节。只要WebService公开了服务接口,远程客户端就可以调用服务。WebService是基于http协议的组件服务,WebService是分散式应用程序的发展趋势。 <br /><br />WebService的开源实现 <br />   WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在JAVA领域,W

2010-11-01 14:05:00 1242

翻译 PL/SQL Developer Version Control Plug-In User’s Guide

这个文档描述了在版本控制系统上使用PL/SQL Developer插件的方法。这个插件是PL/SQL Developer和任何支持微软SCC接口规范的版本控制系统之间的接口。这个插件本身并不具备任何版本控制的能力,它只是简单的依赖你正在使用的版本控制系统。 好处下面列出了使用这个插件的好处:·         提高生产力 - 你可以在PL/SQL中快速的执行任何VCS操作,

2010-10-11 16:28:00 2727

翻译 Tutorials:Getting Started with jQuery---4

SORT ME: USING THE TABLESORTER PLUGINtablesorter插件可以在客户端完成对表格的排序。通过使用jQuery和插件,你可以告诉插件哪个表格需要排序。为了完成这个例子,需要做下载download the tablesorter plugin ,然后把下面这一行加到starterkit.html里面: 包含了插件之后,你可以这样调用: $(document).ready(function(){ $("#large").tablesorter(); });

2010-08-23 10:57:00 677

翻译 Tutorials:Getting Started with jQuery---3

<br /> RATE ME: USING AJAX<br />在这个部分,我们将要编写一个小Ajax程序,它可以帮助用户来引用一些东西,就像youtube.com做的那样。<br />我们需要一些服务器端的代码。这个例子需要一个php文件,它的作用的读取'rating"参数,返回ratings的数量以及平局闹的rating。闲看一下rate.php这个文件。<br />虽然没有Ajax这个例子也能工作,但是我们并不希望那样做,因此我们需要用jQuery生成必要的标记,为div增加一个ID"rating"。

2010-08-19 15:40:00 517

翻译 Tutorials:Getting Started with jQuery---2

<br /> FIND ME: USING SELECTORS AND EVENTS<br />jQuery提供了两种选择元素的方法。第一种方式结合了CSS和XPath选择符,将它们作为string传给jQuery构造器 (eg. $("div > ul a"))。第二种方式则使用了jQuery的几种方法。这两种方式可以混合使用。<br />为了尝试一下这些选择符,我们选择修改starterkit中第一个列表。<br />为了顺利的开始,我们需要能够选择列表。列表的ID为 "orderedlist"。在传统

2010-08-18 11:10:00 457

翻译 Tutorials:Getting Started with jQuery---1

<br /> <br />这个向导是jQuery库的一个简单介绍。当然你需要有JavaScript和DOM的基本知识。这份向导从最基本的开始讲起,同时解释了必要的细节。它把噢噢喊了简单的helloworld例子、选择符(selector)、基本事件、AJAX、FX以及使用和著作的插件。<br /> <br />这份向导没有包含任何"click me"的例子。之所以只提供"copy me"的例子的目的就是为了让你自己动手来实现它们。拷贝一个实例,看看它如何工作,然后去修改它。<br /> SETUP<br /

2010-08-17 09:43:00 464

翻译 4.4.7 加载对象的微调

<br /><br />对于对象的加载,我们来看看还有哪些工作可以做:<br />1. 使你的SQL日志生效。通过阅读SQL日志,你可以评估你的关系模型的效率:一个join操作是否比两个select效率更高呢?索引的设置是否妥当?缓存的命中率是多少?取得你的DBA的帮助是一个好办法,因为只有她才能更加准确的评估那个方案是最佳的。<br />2. 通过用例来逐步的检查Hibernate执行的SQL。在web程序中,一个用例可能仅仅是一个页面或者一个对话框。这种方法同时也包括收集加载对象的方法。你的目标就是尽力

2010-06-02 17:24:00 476

翻译 4.4.6 在映射中选择加载策略

 Hibernate允许在元数据中指定默认的关联加载策略。你可以通过重写Hibernate查询方法来修改默认的策略。这里有个小建议:你不需要立即理解所有的选项;我们建议先整体浏览这部分的内容,在以后的程序可以作为参考。在Hibernate的映射中,集合的映射和普通对象的映射有不同的地方,所以,将分别来讨论这两种情况。首先来考虑Bid和Item之间的双向关联。单点关联对于或者关联来说

2010-05-25 18:57:00 682

翻译 4.4.5 取得策略

在传统的关系数据库访问中,你可以通过一条SQL语句,利用内连接和外连接来取得所需要的数据。对于一些原始的ORM实现策略来说,访问对象图的持久化对象需要对数据库进行许多琐碎的请求才行。这种方式没有充分的利用关系数据库连接的能力。实际使用中,这种策略的性能很差。ORM中需要处理的最难的问题,就是如何有效的访问关系型数据。鉴于我们处理过的多个应用来说,通过对数据库频繁访问的方式来取得数据库是不可

2010-05-24 20:58:00 440

翻译 4.4.4 通过实例查询

 作为QBC工具的一部分,Hibernate支持QBE(query by example)。QBE的意图在于它支持通过一些特定的属性来执行查询。查询的结果返回所有具有匹配属性的实例。QBE并不是一种特别的方法,但是在某些程序中它很有用。下面的代码片段描述了一个Hibernate QBE:QBE的一个典型应用就是通过属性匹配返回结果。而这通过查询语言则很难完成。QBC以及QBE会

2010-05-21 21:16:00 421

翻译 4.4.3 通过Criteria查询

 Hibernate QBC(query by criteria)允许你在运行时通过包装一个标准的对象来构建查询。这种方式可以允许你动态的指定一些约束,但是同时它也丧失了HQL的一些易用性。从另一方面说,通过Criteria构建的查询的可读性比HQL更差。一个Criteria是一组Criterion实例组成的树。Express类提供了静态的工厂类方法来返回Criterion实例。一

2010-05-21 20:54:00 431

翻译 4.4.2 HQL介绍

 HQL是一种面向对象的查询语言,其格式与SQL类似。HQL和ODMG的OQL以及EJB-QL类似,但是与OQL不同的是,它用在SQL数据库的环境中,而且提供了比EJB-QL更强大的功能。只要你有一点SQL的基础就能很容易的学习HQL。HQL并不像SQL那样是一种获取数据的语言。它用来获取对象,而不是更新或者插入或者删除。对象状态的同步是持久化管理器的功能而不是开发者的。大部分时间

2010-05-20 20:49:00 420

翻译 4.4.1 通过标识符取得对象

 下面的代码片段展示了如何从数据库中取得对象: User user=(User)session.get(User.class,userID); get()方法比较特殊,因此标识符唯一的指定了一个类的实例。因此,对于程序来说,使用标识符是处理持久化对象的一种常用手段。通过标识符取得对象还可以利用缓存,这样可以减少访问数据库的次数。 Hibernate同时也提供了load()方法:

2010-05-19 20:43:00 487

翻译 4.4 得到对象

从数据库中取得持久化对象是Hibernate中最有趣的一项工作。针对这种需求,Hibernate提供了以下几种方法: 1)通过已经取得持久化对象,使用它们的getter方法。Hibernate会自动的装载对象图的节点,当前前提是Session还未被关闭。 2)通过标识符取得。 3)通过HQL。 4)使用Criteria API。 5)使用SQL。 在你的Hibernat

2010-05-19 20:14:00 368

翻译 4.3.4 区分transient和detached实例

因为Hibernate并不会保存指向detached实例的引用,你应该让Hibernate知道如何区分detached实例(laptops)和transient实例(laptopBags)。 如果Hibernate认为实例是一个未保存的transient的实例的话,那么: 1)标识符为null(如果存在的话) 2)version属性为null(如果存在的话) 3)在映射文档中设

2010-05-18 22:32:00 489

翻译 4.3.3管理auction categories

 系统管理员可以创建新的categories,重命名categories,移除其子categories。你可以从图4.3中看到这种结构。 现在,我们来映射这个类和关联: 正如第三章讨论的,这是一个递归的、双向的一对多关联。one-valued的一端使用了元素,Set类型则使用了元素。它们都指向了同一个外键列:PARENT_CATEGORY_ID。 假设我们创建一个Compu

2010-05-14 19:19:00 456

翻译 4.3.2 Hibernate的cascading持久化

Hibernate的传播性持久化模型使用了一些基本的概念来实现持久化的可达性---那就是使用关联来将判断传播的状态。然而,Hibernate允许你为每个关联关系映射指定一种casdcade风格。Hibernate会读取这种设置,自动对关联的队形执行cascade操作。 默认情况下,Hibernate不会自动根据关联来查找那些关联的transient或者detached对象,因此保存、删除或

2010-05-14 18:18:00 667

翻译 4.3.1 通过可达性完成持久化

 如果说一个持久层实现了持久化的可达性的话,那么从一个已经持久化了的对象创建另外一个新的对象时,那个新的对象也会被持久化。在图4.2中展示了这种行为。 在这个例子中,“Computer”是一个持久化对象。“Desktop Pcs”和“Monitors”也是持久化的;可以通过“Computer”来访问到它们。“Electronics”和“Cell Phones”是transient的。注

2010-05-13 20:37:00 463

翻译 4.3 在hibernate中使用传播性持久化

一般的程序中当然不会只有一个对象。当程序操作一组持久化对象的时候,其中就可能包括persistent,detached和transient的实例。传播性持久化就是一种强制保存transient和detached对象的技术。 例如,如果你在已经持久化的对象中加入了以新的Category实例,那么不需要调用Session.save()方法,应该就能自动保存这个实例。在第三章我们曾经给过一个稍

2010-05-13 20:01:00 548

翻译 4.2.6 将detached对象编程transient状态

 最后,你可以把一个detached对象编程transient状态,删除其在数据库中对应的状态。这意味着你不需要重新和session产生关联去从数据库中删除它,你可以直接删除一个detached实例: 在这个例子中,delete()方法做了两件事情:重新和session关联,执行删除。 

2010-05-12 22:00:00 378

翻译 4.2.5 将持久化对象编程transient状态

 最后,你可以把一个detached对象编程transient状态,删除其在数据库中对应的状态。这意味着你不需要重新和session产生关联去从数据库中删除它,你可以直接删除一个detached实例: 在这个例子中,delete()方法做了两件事情:重新和session关联,执行删除。 

2010-05-12 21:49:00 380

翻译 4.2.4 更新持久化对象

 通过get()方法或者其他查询来获取的持久化对象都和当前的Session和事务相关联。这个对象可以被修改并且会被同步到数据库。这种机制被称为自动脏数据检测,也就是说Hibernate会自动跟踪和保存session中的对象: 首先,根据所给的数据库标识符获得对象。然后我们修改这个对象,当commit()方法被调用的时候,这些修改会被同步到数据库。当然,只要我们关闭了Session,这个

2010-05-12 21:36:00 373

翻译 4.2.3 重新获得持久化对象

 Session也通常被用来查询来获得一个持久化对象。Hibernate在这方面的功能尤其强大,在下面的章节你会看到。然而,SessionAPI提供了一个简单的查询:通过标识符来查询。其中的一个方法就是get(): 取得的对象作为一个detached对象存在。当然如果没有数据行对应的话,那么get()方法返回null。 

2010-05-11 20:26:00 354

翻译 4.2.2 更新detached对象的持久化状态

 在session关闭之后再去修改user不会对数据库中的数据造成任何影响。当session被关闭之后,user变成了一个detached对象。需要通过update()或者lock()方法来重新和一个新的session关联。 Update() 方法强迫执行一个更新数据库的状态。下面是一个例子: 对象的状态在update()方法之前还是之后更新并不重要。重要的是通过update()方

2010-05-11 20:21:00 429

翻译 4.2.1 持久化一个对象

 你想做的第一件事就是用Session把一个Transient对象持久化。为了做到这些,你需要使用save()方法: 首先,我们初始化一个user对象。当然,我们也可以在建立Session实例之后再初始化它,它们之间的顺序没有什么关系。通过SessionFactory来获得一个Session的实例,然后我们开始一个新事务。 通过调用save()方法把transient对象持久化

2010-05-11 20:07:00 608

翻译 4.2 持久化管理器

任何一个透明化的持久化工具都会提供一个持久化管理器的API,它通常能够给提供如下服务: 1)基本的CRUD操作 2)查询操作 3)事务控制 4)事务级别缓存的管理 持久化管理器能够通过几个不同的接口来暴露给开发者。这些接口的底层实现都紧密相连。 在应用程序和Hibernate最核心的接口是Session;它是你所有操作的起点。在本书的其余部分,持久化管理器和Sessi

2010-05-11 19:29:00 500

翻译 4.1.6 实现equals()和hashCode()

 在java中,equals()方法通常被应用程序调用或者被集合调用。例如,Set会调用equals()方法来确定元素是否重复。 首先,我们来考虑equals()的默认实现。Hibernate保证在每个Session中,每个表格行有且只有一个对象与其对应。如果你没有从其他的Session中取得对象的话,那么默认的equals方法应该是有效的。一旦你拥有被多个Session共享的对象的话,那

2010-05-10 19:47:00 440

翻译 4.1.5 对象身份标识范围之外

如果一个对象引用离开了对象身份的范围,那么我们称这个引用指向了一个detached对象。为了这个概念如此有用呢? 在web程序中,通常在用户交互中你不需要维护一个数据库事务。用户可能需要花费很长时间去做修改方面的事情,但是由于性能方面的原因,你必须保证数据库事务不能占用太长时间并且尽快释放数据库资源。在这个环境中,重用一个指向detached实例的应用就变得很有意义。例如,你可能想要发送一

2010-05-07 21:15:00 442

翻译 4.1.4 对象身份的范围

 作为开发人员,我们使用==来识别一个对象的身份。因此,如果一个对象更改了状态以后,它的身份是否仍然和原来一样?在分层的程序当中,可能并不如此简单。 为了更深入探讨这个问题,需要明白在java对象身份和数据库标识之间的关系。有些时候,它们是等价的,而有时它们又不是相等的。我们把这个问题归结为对象身份的范围。 对于这个范围,有三种一般的选择: (1)如果一个持久层没有身份标识的范围的

2010-05-05 22:52:00 506

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除