使用SQLMaps 进行对象关系映射

使用SQLMaps 进行对象关系映射,第1张

引论 随着Hibernate逐渐成为其他架构之首 现今的许多工作都是在对象关系(OR)映射域上进行 但是 那些对象关系映射工具有一个问题 大部分数据库管理员似乎对这些对象关系(OR)映射工具所产生的查询不放心 不幸的是 这些数据库管理员不了解 架构所产生的查询是多么的优越 并且使你的应用程序更加灵活 他们觉得随着数据库成为应用程序的主要瓶颈 应该完全控制SQL查询 以便他们能分析和调试以促进性能 但有个问题是 如果不使用对象关系(OR)映射工具 那么你将花费很多资源在书面形式上和维护低级JDBC代码 由于以下原因 每个JDBC应用程序都将含有重复代码 连接和事务管理 设置java对象为查询参数 转换SQL ResultSets 为 java 对象 生成查询字符串 iBatis 的 SQLMaps 架构帮助我们在相当大的程度上减少了正常情况下访问关系数据库的java代码的总量 它考虑到了当前三个比较关心的问题 所以它可以将一个简单的 JavaBean 对象映射到 PreparedStatement 参数和 ResultSet 值 SQLMaps 的原理其实很简单 提供一个简单的架构来提供 %的JDBC功能 这篇文章是关于如何使用 SQLMaps 架构的进阶辅导 我们将建立一个简单的 Struts 应用程序并且用 SQLMaps 配置它为开始 接着 我们将演示如何执行基本的数据库 *** 作比如 SELECT INSERT UPDATE 等等 然后 我们将演示 SQLMaps 为连接和事务管理提供的 *** 作 在最后 我们将试着使用一些高级的 SQLMaps 功能部件比如缓存和分页 SQLMaps 的基本思想 使用 SQLMaps 架构 你必须建立一个XML文件列出所有你希望在应用程序中执行的SQL查询 对于每个SQL查询 你来指定哪个java类可以交换参数和ResultSet(结果集) 在你的java代码中 如果你想要执行一个特殊的查询 你需要创建一个对象来传递查询参数和必要的条件 然后传递这个对象和查询的名字让 SQLMaps 执行 一旦查询被执行 SQLMaps 将为你指定的接受查询结果的类创建一个句柄 并且将它和数据库返回的ResultSet 中的值存储在一起 一个简单的使用SQLMaps的应用程序(Hello World) 我们将创建一个简单的Struts应用程序开始来演示什么是使用SQLMaps的应用程序所需要的 这个例子的代码是来自以下资源部分 在这个例子中 我们用一个Jsp页面要求用户输入contactId属性 一旦它被提交 我们用它在CONTACT 表中搜索一个连接 并且用另一个Jsp页面展示给用户 接下来一步一步说明 拷贝ibatis sqlmap jar 和 ibatis mon jar 到你的 web inf/lib 文件夹中 在你的java源文件夹中创建一个 SqlMapConfig xml 文件 像这样 <sqlMapConfig><settings useStatementNamespaces= false /><transactionManager type= JDBC ><dataSource type= SIMPLE ><property name= JDBC Driver value= ibm db jdbc app DB Driver /><property name= JDBC ConnectionURL value= jdbc:db :SAMPLE /><property name= JDBC Username value= db admin /><property name= JDBC Password value= admin db /></dataSource></transactionManager><sqlMap resource= Contact xml /></sqlMapConfig>SqlMapConfig xml 是SQLMaps的部署描述信息 包括以下元素 <sqlMapConfig>是文件的根元素 <settings>被用来定义应用程序级别的设置 例如 useStatementNamespaces 属性被用来定义是否要用准备说明的全限定名 它可以有一些另外的属性用于控制缓存和初始化 要知道更进一步的细节请查看文档 <transactionManager> 被用来定义你想要在你的应用程序中使用的事务管理 在我们的例程中 我们要用Connection 对象的 mit 和 rollback 方法来管理事务 所以我们用JDBC作为事项管理程序 它包含 <dataSource> 作为子元素 <dataSource>用来定义你要使用的连接管理的类型 在我们的例程中 我们要用SQLMaps自带的连接池实现 如此我们将使用一个SIMPLE类型的数据源 为了建立连接池 SQLMaps要求像JDBC驱动名称 URL 和密码这些信息 因此 我们使用<property>元素来传递这些信息 稍后 我们将更加详细地讨论各种各样可用的事务和连接管理选项 <sqlMap>元素被用来表明 SQLMap 配置文件 这些文件 如早先讨论的 列出了你希望执行的SQL查询 创建一个JavaBean类 Contact java 有属性 firstName lastName 和 contactId 和相应的get set方法 这个类将被用来向ResultSet传递查询参数并读取值 public class Contact implements Serializable{  private String firstName;  private String lastName;  private int contactId;  //Getter setter methods for firstName //lastName and contactId property} 建立一个Contact xml文件 我们将在文件中列出所有要执行的与表Contact有关的SQL查询 <sqlMap namespace= Contact ><typeAlias alias= contact type= ntact Contact / ><select id= getContact parameterClass= int resultClass= contact >select CONTACTID as contactId FIRSTNAME as firstName LASTNAME as lastName from  ADMINISTRATOR CONTACT where CONTACTID = #id#</select></sqlMap>文件中使用的标签如下 <sqlMap>是文件的根元素 正常情况下 你的应用程序将有不止一个表 由于你要把与不同表有关的查询分开成不同的名称空间(namespace) <namespace> 元素就是被用来指定在此文件中查询应被放置的名称空间 <typeAlias> 用来说明Contact 类的全限定名的一个简称 在此说明后 这个简称可以被用来替代全限定名 在SQLMaps架构中 <select> 元素用来声明SQLMaps架构中的SELECT查询 它的值就是你能指定的要执行的查询 id属性被用来指定通知SQLMaps 执行特殊查询的名称 parameterClass 被用来指定传递查询参数的类 resultClass 提供从ResultSet返回值的类的名称 在Action类的 execute() 方法内 我们建立了一个SqlMapClient的句柄 它被用来和SQLMaps相互作用 我们必须向SqlMapClientBuilder传递SqlMapConfig xml文件 它被用来读取配置设置 DynaActionForm contactForm =(DynaActionForm)form;Reader configReader =Resources getResourceAsReader( SqlMapConfig xml );SqlMapClient sqlMap =SqlMapClientBuilder buildSqlMapClient(configReader);Contact contact = (Contact)sqlMap queryForObject( getContact contactForm get( contactId ));request setAttribute( contactDetail contact);return mapping findForward( success );当你要执行一个SELECT 查询时 应该使用 SQLMaps 的 queryForObject 方法 在Contact xml文件中 我们已经指定parameterClass为int 所以我们在传递查询的名称的时候传递一个integer作为contactId (i e getContact) SQLMaps 将返回一个Contact 类的对象 基本数据库 *** 作 现在我们要返回我们的所关注的使用SQMLaps如何表示一些基本的数据库 *** 作 Insert *** 作我们从如何执行一个开始Insert *** 作开始 <insert id= insertContact parameterClass= contact >INSERT INTO ADMINISTRATOR CONTACT( CONTACTID FIRSTNAME LASTNAME)VALUES(#contactId# #firstName# #lastName#);</insert><insert> 元素被用来声明一个Insert的SQL查询 它有一个parameterClass 属性用来指明哪个JavaBean类将被用来传递(request)请求参数 在插入新的记录时 我们要使用contactId属性的值 所以我们必须在SQL查询中使用一个#contactId# public void contactInsert() throws SQLException IOException {sqlMap startTransaction();try {sqlMap startTransaction();Contact contact = new Contact();contact setContactId( );contact setFirstName( John );contact setLastName( Doe );sqlMap insert( insertContact contact);mitTransaction();} finally{sqlMap endTransaction();}}在我们的java代码中 我们建立了一个Contact 对象 存放它的值 然后调用sqlMap insert()方法 传递我们要执行的查询的名称和 Contact 这个方法将插入一个新的Contact并且返回新插入的Contact的主键 缺省情况下 SQLMaps 把每个DML方法当作工作的一个单元 但是你能使用 startTransaction mitTransaction 和 endTransaction 方法来划分事务处理 通过调用 startTransaction() 方法你可以启动一个事务处理 此方法也能从连接池中获得一个连接 在这个事务中 这个连接对象将被用来执行查询 如果这个事务的所有查询都被成功执行 应该调用 mitTransaction 方法提交你的改动 不考虑你的事务成功与否 lishixinzhi/Article/program/Java/gj/201311/27482

[1]dbms:代表所使用的数据库,如我们这里是mysql

[2]user:对应我们数据库的用户,如我们这里是root

[3]password:对应我们数据的密码,如我的服务器为3erver

[4]dbma_IP:数据库服务器对应的ip地址,如我这里为19216880128

[5]dbms_PORT:数据服务器所使用的端口,不能省略。默认我们写3306

[6]database_NAME:你要使用的数据库名,因为mysql一般会有test数据库,如我这里使用test。假如没有test,我们可以自己使用create database test;创建一个

sqlmap是一个自动SQL注入工具,它是可胜任执行一个广泛的数据库管理系统后端指印,检索遥远的DBMS数据库,usernames,表格,列,列举整个DBMS的相关信息。

5款实用的漏洞扫描工具:

1、SQLmap

Sqlmap属于渗透测试工具,但具有自动检测和评估漏洞的功能。该工具不只是简单地发现安全漏洞及利用漏洞的情况,它还针对发现结果创建了详细的报告。Sqlmap利用Python进行开发,支持任何安装了Python解释器的 *** 作系统。它能自动识别密码哈希,并使用六种不同方式来利用SQL注入漏洞。此外,Sqlmap的数据库非常全面,支持oracle、PostgreSQL、MySQL、SqlServer和Access。

2、Nmap

Nmap是一款开源网络扫描工具,应用场景包括端口扫描、服务指纹识别以及 *** 作系统版本识别。Nmap通常被视为网络映射及端口扫描工具,但因为其带有Nmap脚本引擎,也有助于对错误配置问题和安全漏洞进行检测。另外,Nmap具备命令行界面以及图形用户界面。

3、Nexpose

Nexpose社区是一个通用的开源漏洞评估工具,其漏洞引擎由Rapid7开发,扫描漏洞近68000个,进行了超过163万次网络检查。针对Windows及Linux系统的社区版免费,但仅限32个IP地址,以及一个用户。虽然没有Web应用程序扫描,但Nexpose覆盖自动漏洞更新以及微软补丁星期二漏洞更新。

4、Retina CS

Retina CS也是一个通用的开源漏洞评估工具。它是基于Web的控制台,可以免费简化并集中管理漏洞,可打补丁资产达到256项。Retina

CS能对服务器、工作站、移动设备、数据库、应用程序和Web应用程序自动进行漏洞评估。这款开源应用程序为VMware环境提供了全方位支持,包括在线与离线虚拟镜像扫描、虚拟应用程序扫描,以及与Vcenter集成。

5、Burp Suite

Burp

Suite免费版是开源的Web应用程序漏洞扫描器,该版本属于软件工具包,涵盖了对Web应用程序手动安全测试所需的所有东西。它可以使用拦截代理,针对浏览器和目标应用程序之间的流量进行检查与修改;还能利用可感知应用程序的Spider抓取应用程序的内容及功能;此外,使用中继器工具能够处理并重新发送单个请求,也可访问针对分析及解码应用程序数据的一系列实用程序。

sqlmap是一个自动SQL注入工具,它是可胜任执行一个广泛的数据库管理系统后端指印,检索遥远的DBMS数据库,usernames,表格,列,列举整个DBMS的相关信息。

sqlmap是一个自动SQL注入工具,它是可胜任执行一个广泛的数据库管理系统后端指印,检索遥远的DBMS数据库,usernames,表格,列,列举整个DBMS的相关信息。\r\n

以上就是关于使用SQLMaps 进行对象关系映射全部的内容,包括:使用SQLMaps 进行对象关系映射、怎么用sqlmap连接mysql、请问sqlmap什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9715151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存