Webservice往oracle插入数据.docx

上传人:b****2 文档编号:1766432 上传时间:2023-05-01 格式:DOCX 页数:9 大小:18.73KB
下载 相关 举报
Webservice往oracle插入数据.docx_第1页
第1页 / 共9页
Webservice往oracle插入数据.docx_第2页
第2页 / 共9页
Webservice往oracle插入数据.docx_第3页
第3页 / 共9页
Webservice往oracle插入数据.docx_第4页
第4页 / 共9页
Webservice往oracle插入数据.docx_第5页
第5页 / 共9页
Webservice往oracle插入数据.docx_第6页
第6页 / 共9页
Webservice往oracle插入数据.docx_第7页
第7页 / 共9页
Webservice往oracle插入数据.docx_第8页
第8页 / 共9页
Webservice往oracle插入数据.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Webservice往oracle插入数据.docx

《Webservice往oracle插入数据.docx》由会员分享,可在线阅读,更多相关《Webservice往oracle插入数据.docx(9页珍藏版)》请在冰点文库上搜索。

Webservice往oracle插入数据.docx

Webservice往oracle插入数据

在成功发布webservice后,可以通过WSDL找到http地址,里面有自己写的接口方法。

那么如何调用这些接口方法呢?

我们通过soap可以测试查询到的数据,但是无法执行插入方法或者删除方法,这时候我们就要想到java里面的main方法,通过main方法可以实现new一个对象来调用接口方法,既然查询已经成功,就先做一个测试查询的main方法。

在网上查询到如下方法可以进行测试(直接在相应包里创建java文件)

packagecom.zblstockmkg;

import.MalformedURLException;

importorg.codehaus.xfire.XFireFactory;

importorg.codehaus.xfire.client.XFireProxyFactory;

importorg.codehaus.xfire.service.Service;

importorg.codehaus.xfire.service.binding.ObjectServiceFactory;

//webservice接口测试方法from

publicclassTest{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

ServicesrvcModel=newObjectServiceFactory()

.create(IService.class);

XFireProxyFactoryfactory=newXFireProxyFactory(XFireFactory

.newInstance().getXFire());

StringhelloWorldURL="http:

//localhost:

8080/WebService/services/ZblStockMKg";

try{

IServicesrvc=(IService)factory.create(

srvcModel,helloWorldURL);

System.out.print(srvc.findLoad(0,6).get(4).getCategNo());

//srvc.findLoad(0,3).get(0).getCategNo();

}catch(MalformedURLExceptione){

e.printStackTrace();

}

}

}

第二种测试方法就是通过自己建立一个javaweb(WebProject)工程,在里面生成WebserviceClient。

具体方法如下:

首先,你要先把你的WS服务启动起来,就是http:

//localhost:

8080/Example/services/HelloWorldService?

wsdl然后在你的另一个项目中建一个WebserviceClient客户端,用来访问你的WS服务。

建立WebserviceClient方法如下,在Eclipses中建立一个java工程,然后在src上右键--NEW---Other---WebServiceClient--Xfire--在WsdLurl中写上http:

//localhost:

8080/Example/services/HelloWorldService?

wsdl-----下一步结束。

在src里的会出现一些java文件,你找一个以Client结束的java文件,在里面的main方法中会有个service对象,现在你就可以直接用这个对象了,service.hello(参数)这样写就行了。

要实现通过Hibernate将数据插入oracle数据库,需要一个hibernate.cfg.xml文件,在src文件下右键可以new出来。

并且往里面配置相应的mapping即事物管理类。

如:

Hibernate通过此方法知道了我们映射完成了,并且知道了我们如何映射的。

ZblStockMKg.hbm.xml中主键的id配置也是关键点(generratorclass=“”)

主要内容如下我们用的是assigned。

“assigned”

主键由外部程序负责生成,在save()之前指定一个。

“hilo”

通过hi/lo算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。

“seqhilo”

与hilo类似,通过hi/lo算法实现的主键生成机制,需要数据库中的Sequence,适用于支持Sequence的数据库,如Oracle。

“increment”

主键按数值顺序递增。

此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。

这种方式可能产生的问题是:

不能在集群下使用。

“identity”

采用数据库提供的主键生成机制。

如DB2、SQLServer、MySQL中的主键生成机制。

“sequence”

采用数据库提供的sequence机制生成主键。

如Oralce中的Sequence。

“native”

由Hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。

“uuid.hex”

由Hibernate基于128位UUID算法生成16进制数值(编码后以长度32的字符串表示)作为主键。

“uuid.string”

与uuid.hex类似,只是生成的主键未进行编码(长度16),不能应用在PostgreSQL数据库中。

“foreign”

使用另外一个相关联的对象的标识符作为主键。

元素中的用来为该持久化类的实例生成唯一的标识,hibernate提供了很多内置的实现。

Increment:

由hibernate自动递增生成标识符,用于为long,short或者int类型生成唯一标识。

identity:

由底层数据库生成标识符(自动增长),返回的标识符是long,short或者int类型的。

sequence:

hibernate根据底层数据库序列生成标识符,返回的标识符是long,short或者int类型的。

hilo:

使用一个高/低位算法来高效的生成long,short或者int类型的标识符。

uuid.hex:

用一个128-bit的UUID算法生成32位字符串类型的标识符。

native:

根据底层数据库的能力选择identity,sequence或者hilo中的一个。

assigned:

让应用程序在save()之前为对象分配一个标示符。

foreign:

使用另外一个相关联的对象的标识符。

联合一起使用。

一、id生成方式

1,序列sequence只适用于Oracle

person_seq

--指定sequence名-->

2,自增列,适用于SQLServer、MySql

3,取最大值加一

4,根据底层数据库指定生成方法

使用缺省策略

针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence,"hibernate_sequence"。

5,高低位算法

high_value

--设置高位值取值的表-->

next_value

--设置高位值取值的字段-->

50

--指定低位最大值,当取道最大值是会再取一个高位值再运算-->

以上是hilo算法的普通形式,不适合用于squenece

在一个会话中保存多个对象

二、Hibernate中对类关系的处理:

one―to―one关系在数据库中如何体现,在JavaBean中如何体现,在

Hibernate中如何映射one-to-one关系。

1、数据库中:

一个表的外健对应另一个表的主健,外健要加上Unique约束(外健关联)。

或者是两个表共享一个主健,表现为子表中的pk同时引用了父表的pk作外健而存在(主健关联,子表中的pk和fk为一个字段)。

2、javaBean中:

在JavaBean中增加一个属性,即另外一个对象的引用,可以单向也可以双向。

3、在hibernate中:

A、主健映射:

都是one-to-one要用foreign生成策略。

以汽车car和发动机Engine(一对一关系)为例:

a、主表Car.hbm.xml的写法

注:

cascade="all"表示增删改查Car对象时都会级联增加、删除和修改Engine对象。

级联一定是在主对象的映射文件中

b、附表Engine.hbm.xml的写法

car

注:

c表示Engine应用了Car的主健作为外健。

foregin表明id的生成方式是引用表car的主键

B、外健映射:

主表中用one-to-one,通过property-refmany-to-one

a、主表Car.hbm.xml的写法

property-ref="car"cascade="save-update"/>

注:

name="engine"property-ref="car"表示engine表引用了car表的主健作为他的外健。

cascade="save-update"表示增改Car对象时都会级联增加和修改Engine对象。

b、附表Engine.hbm.xml的写法

unique="ture"column="carid"/>

注:

unique="ture"column="carid"表示为engine表中的外健carid加上唯一约束,使之一对多关系强制转化为一对一关系。

最后通过自己建立的Client类测试插入。

packagecom.zblstockmkg;

importjava.math.BigDecimal;

importorg.hibernate.Session;

importorg.hibernate.SessionFactory;

importorg.hibernate.cfg.Configuration;

publicclassClient{

publicstaticvoidmain(String[]args){

//读取hibernate.cfg.xml文件

Configurationcfg=newConfiguration().configure();

//建立SessionFactory

SessionFactoryfactory=cfg.buildSessionFactory();

//取得session

Sessionsession=null;

try{

session=factory.openSession();

//开启事务

session.beginTransaction();

ZblStockMKguser=newZblStockMKg();

inta=111;

user.setBatchNo(a);

user.setCategNo("102");

//保存User对象

session.save(user);

//提交事务

session.getTransaction().commit();

session.flush();

System.out.println("保存成功");

}catch(Exceptione){

e.printStackTrace();

//回滚事务

session.getTransaction().rollback();

}finally{

if(session!

=null){

if(session.isOpen()){

//关闭session

session.close();

}

}

}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2