Hibernate呼叫Oracle的儲存過程

2022-09-18 11:42:17 字數 2706 閱讀 8313

眾所周知,當過多的使用儲存過程,觸發器等 資料庫方言相關的應用時,應用程式的移植性會變差,特別是在hibernate中使用這些,簡直是諷刺,但是當今中國又有哪家公司做專案會關心應用程式的移植性呢?

現在看看hibernate中對oracle儲存過程的呼叫.

1.plsql **

create procedure proc()

begin

select *from proctab;

end;

1 create procedure proc1(v_no number(4))

2begin

3 select *from proc1

4 where id=v_no;

5end;

2.hibernate 儲存過程呼叫的一種方法是,通過xml傳統的對映方式去呼叫。

-》儲存過程對映和領域模型中的實體的對應關係

複製**

1

2 3 class="native"/>

4

5 6 7 class>

8 9

10

11

12

13 return>

14

15 複製**

-》hibernate api 對儲存過程的呼叫

複製**

1 session ss=hibernatesessionfactory.getsession()

2 list li=ss.getnamedquery("getuser").list();

3ss.close();

4 5 session ss=hibernatesessionfactory.getsession()

6 list li=ss.getnamedquery("getuser").list();

7ss.close();

複製**

-》jdbc api 對儲存過程的呼叫

複製**

1 session session =hibernatesessionfactory.getsession();

2 connection conn =session.connection();

3 resultset rs =null

;

4 callablestatement call = conn.preparecall("");

5 rs =call.executequery();

6rs.close();

7session.close();

8 9 session session =hibernatesessionfactory.getsession();

10 connection conn =session.connection();

11 resultset rs =null

; 12 callablestatement call = conn.preparecall("");

13 rs =call.executequery();

14rs.close();

15session.close();

複製**

-》直接使用 hibernate createquerysql呼叫儲存過程

複製**

1 session session =hibernatesessionfactory.getsession();

2 sqlquery query = session.createsqlquery("");

3 list list =query.list();

4session.close();

5 6 session session =hibernatesessionfactory.getsession();

7 sqlquery query = session.createsqlquery("");

8 list list =query.list();

9session.close();

複製**

-》通過hibernate api或者jdbc,api給儲存過程傳參

複製**

1 callablestatement call = conn.preparecall("");

2 call.setstring(1, 引數);

3 rs =call.executequery();

4 5 callablestatement call = conn.preparecall("");

6 call.setstring(1, 引數);

7 rs =call.executequery();

複製**

1 sqlquery query = session.createsqlquery("");

2 query.setstring(0, 引數);

3 list list =query.list();

hibernate呼叫儲存過程

drop table if exists user create table user id int 11 not null auto increment,name varchar 16 not null default remark varchar 16 not null default prim...

hibernate呼叫儲存過程

一 建表 drop table if exists user create table user id int 11 not null auto increment,name varchar 16 not null default remark varchar 16 not null default...

hibernate 呼叫儲存過程

create table proctab id int 11 not null auto increment,name varchar 20 age int 11 primary key id 簡單的儲存過程 create procedure proc begin select from proct...