900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > JAVA导入Oracle包_将java的jar包导入oracle 通过oracle调用java方法

JAVA导入Oracle包_将java的jar包导入oracle 通过oracle调用java方法

时间:2021-08-13 06:54:50

相关推荐

JAVA导入Oracle包_将java的jar包导入oracle 通过oracle调用java方法

最近项目上遇到一个问题,因为项目一些数据设计保密的问题,所以数据库的很多数据都是脱敏存储的;但是需求又需要去模糊查询,这就蛋疼了, 由于项目是用base64脱敏的;第一次想到了把条件进行脱敏之后去数据库匹配, 经过测试之后发现,中文脱敏之后去数据库模糊查询是可行的,但是字母和数字脱敏之后就匹配不上了(这可能与加密方式有关,具体没研究过).

后来又想到了又缓存,把所有数据查出来之后,再来项目中处理;但是后来一起研究以后发现,这样有点儿大材小用了

最后一种方式就是本文介绍的方式,由于脱敏的jar已经封装好,所以把这个jar导入进oracle之后,再在oracle 里面写个函数(可以手写代码,也可以在oracle里面选择函数自动生成),通过这个函数来调用java的方法就可以了,为什么oracle可以执行java代码?因为它里面有一个jvm.

具体步骤:

###将jar包导入 oracle

loadjava -r -f -o -u dataBaseName/password@10.20.111.11:1521/name -v -resolve D:work\test.jar (jar包地址)

(dataBaseName:数据库名称 , password:密码,10.20.111.11:1521/name:数据库连接地址, test.jar:需要导入的jar包)

###查看是否已经导入jar包

select * from user_java_classes;

(注意,在最初导入的时候我们遇到一个问题,一直导入失败,提示找不到类;最后我们发现这个错误是因为,这个脱敏jar包里面有很多类,还关联了其它一些jar包,由于我们只导入了这个jar包,其它相关联的没有导入,所以提示这个错误,后来我们把脱敏的相关类,单独提出来,作成一个新的jar导入进去就ok了)!

###新建function

create or replace function decrpt(ins varchar2) return varchar2 as

LANGUAGE JAVA NAME 'com/test/t/des/utils/DeUtil.decrypt(java.lang.String) return java.lang.String',

(也可以通过菜单选择函数自动生成,此段代码可以和sql语句一样执行)

由于有时候我们会导入出错,所以提供了删除功能

### 删除

dropjava -u dataBaseName/password@10.20.111.11:1521/name -v com/test/t/des/utils/DeUtil

最后执行查询

select decrpt(name) from table

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。