一篇英文博文,写的是利用hibernate处理存储过程中的游标等等:

Motivation: While there are a few resources available online for calling stored procedures from Hibernate, it took me a while to stumble across one that mostly captures what I need. The intention of this blog entry is to put a similar example into my own words, to extend it slightly and hopefully to help anyone not experienced with Hibernate and Oracle to integrate Stored Procedures and Functions into an application quickly.

Setup Oracle 10g

For this example, we will be using Oracle 10g. We can initialize our schema user with SQLPlus with the following commands:

sqlplus connect as sysdba

create user my_orcl identified by my_orcl;

grant create session to my_orcl;

grant resource to my_orcl;

grant create table to my_orcl;

Setup a Project For Spring and Hibernate

We will download spring-framework-2.5.5-with-dependencies.zip, hibernate-distribution-3.3.1.GA-dist.zip and hibernate-annotations-3.4.0.GA.zip. We can create a standard project layout of src, test and lib folders with the following jars on the classpath:

spring-framework-2.5.5/dist/spring.jar

spring-framework-2.5.5/dist/modules/spring-test.jar

spring-framework-2.5.5/lib/jakarta-commons/commons-logging.jar

spring-framework-2.5.5/lib/jakarta-commons/commons-dbcp.jar

spring-framework-2.5.5/lib/jakarta-commons/commons-pool.jar

spring-framework-2.5.5/lib/jakarta-commons/commons-collections.jar

spring-framework-2.5.5/lib/dom4j/dom4j-1.6.1.jar

spring-framework-2.5.5/lib/log4j/log4j-1.2.15.jar

spring-framework-2.5.5/lib/slf4j/slf4j-api-1.5.0.jar

spring-framework-2.5.5/lib/slf4j/slf4j-log4j12-1.5.0.jar

spring-framework-2.5.5/lib/j2ee/*.jar

hibernate-annotations-3.4.0.GA/hibernate-annotations.jar

hibernate-annotations-3.4.0.GA/lib/hibernate-commons-annotations.jar

hibernate-distribution-3.3.1.GA/hibernate3.jar

hibernate-distribution-3.3.1.GA/lib/required/javassist-3.4.GA.jar

hibernate-distribution-3.3.1.GA/lib/required/slf4j-api-1.5.2.jar

Because we will be using Oracle Stored Procedures, we will also need a database driver such as

oracle/product/10.2.0/db_1/jdbc/lib/ojdbc14.jar

Create Domain Objects

We can setup our domain using annotated Java. For these examples, we need one simple domain Object.

package spring.hibernate.oracle.stored.procedures.domain;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name = “AUTHOR”, schema = “MY_ORCL”)

public class Author implements java.io.Serializable {

private static final long serialVersionUID = 8676058601610931698L;

private int id;

private String firstName;

private String lastName;

@Id

@Column(name = “ID”, nullable = false)

public int getId() {

return this.id;

}

public void setId(final int id) {

this.id = id;

}

@Column(name = “FIRST_NAME”, nullable = false, length = 50)

public String getFirstName() {

return this.firstName;

}

public void setFirstName(final String firstName) {

this.firstName = firstName;

}

@Column(name = “LAST_NAME”, nullable = false, length = 50)

public String getLastName() {

return this.lastName;

}

public void setLastName(final String lastName) {

this.lastName = lastName;

}

}

Create a DAO

Now that we have a domain Object, we can create a DAO for a simple operation, such as looking up Authors by last name. Fortunately, Spring provides a convenient base class for DAO operations.

package spring.hibernate.oracle.stored.procedures.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import spring.hibernate.oracle.stored.procedures.domain.Author;

public class AuthorDAO extends HibernateDaoSupport {

@SuppressWarnings(“unchecked”)

public List findByLastNameUsingHQL(final String lastName) {

return getHibernateTemplate().find(“from Author author where author.lastName = ?”, lastName);

}

}

The Spring Application Context Configuration

The Spring applicationContext.xml can reside directly at the root of our src classpath, and it will contain information for configuring Spring to manage our Hibernate sessions, transactions and datasources, as well as our DAO.

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring, Hibernate and Oracle Stored Procedures的更多相关文章

  1. [转]How to: Execute Oracle Stored Procedures Returning RefCursors

    本文转自:http://www.telerik.com/help/openaccess-orm/openaccess-tasks-oracle-execute-sp-result-set.html I ...

  2. [转]Oracle Stored Procedures Hello World Examples

    本文转自:http://www.mkyong.com/oracle/oracle-stored-procedures-hello-world-examples/ List of quick examp ...

  3. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

  4. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  5. SSH框架简化(struts2+spring+hibernate)

    目的: 通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91 ...

  6. Spring/Hibernate 应用性能优化的7种方法

    对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能.此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法.本文系 O ...

  7. Performance Tuning of Spring/Hibernate Applications---reference

    http://java.dzone.com/articles/performance-tuning For most typical Spring/Hibernate enterprise appli ...

  8. Spring / Hibernate 应用性能调优

    来源:ImportNew - 陈晓舜 对大部分典型的Spring/Hibernate企业应用来说,应用的性能大部分由持久层的性能决定. 这篇文章会重温一下怎么去确认我们的应用是否是”数据库依赖(dat ...

  9. Spring+Hibernate实现动态SessionFactory切换

    场景: 1)系统有多个数据库 2)且数据库类型也不尽相同 3)现在应用根据某些条件路由到具体的数据库 4)且在spring+hibernate框架下,支持依赖注入 已有实现,spring动态数据源,但 ...

随机推荐

  1. 工作中你肯定会有关于 Yii2 的小贴士用法,在下面评论分享出来吧。

    场景: 数据库有user表有个avatar_path字段用来保存用户头像路径 需求: 头像url需要通过域名http://b.com/作为基本url 目标: 提高代码复用 此处http://b.com ...

  2. 图形用户界面(GUI)事件监听机制——窗体事件Frame

    窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...

  3. [原创]java WEB学习笔记22:MVC案例完整实践(part 3)---多个请求对应一个Servlet解析

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. Python 3 mysql 表操作

    Python 3 mysql 表操作 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行内容称为 ...

  5. ConcurrentHashMap以及HashMap,HashTable的区别

    ConcurrentHashMap与HashMap,和HashTable 的区别? ConcurrentHashMap是一个线程安全的key-value数据结构,而HashMap不是.Concurre ...

  6. 简洁的支持展开关闭的tab标签代码

    简洁的支持展开关闭的tab标签代码,由huiyi8素材网提供. TAB标签代码下载:http://www.huiyi8.com/tab/

  7. 用 CSS3 创建一个漂亮的多种色彩的菜单

    1. [图片] thumb.png ​2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" >    <hea ...

  8. 关于VS中包含库、附加包含库、

    转载:https://blog.csdn.net/qing101hua/article/details/53841827 VS中C++的包含目录.附加包含目录和库目录和附加库目录的区别 对Visual ...

  9. ONVIF测试方法及工具

    设备是否支持ONVIF验证1 ONVIF Test Tool安装1.1PC安装环境要求:装有Microsoft .Net Framework 3.5或以上版本.1.2安装源文件请见:ONVIF Con ...

  10. tcpdump示例

    今天有需求要用tcpdump,给一个我使用的例子: sudo /usr/sbin/tcpdump  dst 10.20.137.24 and tcp port 8080 -A -s0  -w nous ...