Spring訪問oracle資料庫配置步驟

來源:互聯網
上載者:User

標籤:

1.spring 對資料庫訪問的支援

當我們開發持久層的時候,我們面臨著多種選擇,比如使用JDBC、Hibernate、java持久化API或其它持久化架構。幸好的是spring能夠支援所有這些持久化機制。

DAO(data access boject)Data Access Objects,這個名字就很形象描述了DAO在應用程式中所扮演的角色。DAO提供了資料的讀取、寫入到資料庫中的一種方式。它們應該以介面的方式發布功能,而應用程式的其它部分就可以通過介面來進行訪問了。


2.配置資料來源

spring提供了在spring上下文中配置資料來源Bean的多種方式,包括:

a.通過JDBC驅動程式定義的資料來源;

b.通過JNDI尋找的資料來源;

c.串連池的資料來源;

接下我們就專門來講講從使用串連池擷取串連的資料來源!(即c點)

上下文配置Bean的代碼:

<span style="font-size:18px;"><!--配置資料來源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/><property name="username" value="wwo"/><property name="password" value="wwo"/><!-- 串連池啟動時的初始值 --><property name="initialSize" value="3" /><!-- 串連池的最大值 --><property name="maxActive" value="300" /><!-- 最大空閑值.當經過一個高峰時間後,串連池可以慢慢將已經用不到的串連慢慢釋放一部分,一直減少到maxIdle為止 --><property name="maxIdle" value="2" /><!-- 最小空閑值.當閒置串連數少於閥值時,串連池就會預申請去一些串連,以免洪峰來時來不及申請 --><property name="minIdle" value="1" /><!-- end --></bean></span>

註:JDBC驅動資料來源並沒有池的概念,因此沒有存在池屬性的配置!
好了,到這一步,我們已經完成了通過資料來源建立了與資料庫的串連,接下來就是實際訪問資料庫了。

3.在Spring中整合Hibernate

Hibernate一些特性:

a.消極式載入(Lazy loading):例如一個Bean對象由其屬性及另一個Bean對象組成,如果我們只關注的只是這個Bean對象的屬性,那麼我們可以藉助於消極式載入,只抓取需要的資料;

b.預先抓取(Eager fetching):這與消極式載入是相對的,一個Bean所關聯的其它Bean都會被查詢出來,這就節省了多次查詢的成本;

c.級聯(Cascading):有時候刪除一個Bean對象後,也希望其同時能資料庫中刪除掉與其關聯的其它Bean。

Spring對Hibernate ORM架構的支援提供了與這些框架組成點以及一些附加的服務,如下所示:

a.Spring聲明式事務的整合支援;

b.透明的異常處理;

c.安全執行緒的、輕量級的模板類;

d.DAO支援類;

e.資源管理。

4.聲明會話工廠(Session Factory)

使用Hibernate的主要介面是org.hibernate.Session。Session提供了基本的資料訪問功能,如儲存、更新、刪除以及從資料庫載入對象的功能。

能過藉助於Hibernate的SessionFactory來擷取Session對象,SessionFactory主要負責Hibernate Session的開啟、關閉以及管理。

配置在xml內容相關的Bean如下:

<span style="font-size:18px;"><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="packagesToScan"><!--掃描一下實體目錄 --><list><value>com.cd.entity</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql"> true</prop><prop key="current_session_context_class">thread</prop></props></property></bean></span>
5.建立自己的基礎DAO類

Spring可以通過Spring的Hibernate模板來保證每個事務都使用同一個會話。既然Hibernate能夠對其自己進行管理,那就不必要使用模板類了。接下我們直接將Hibernate Session裝配到自己的DAO類中。

<span style="font-size:18px;">/** * 基礎dao * @param <T> */public abstract class BaseDAO<T> {/** * 注入sessionFactory */@Autowiredprivate SessionFactory sessionFactory;/** * 獲得session *  * @return */protected Session getCurrentSession() {return sessionFactory.getCurrentSession();}/** * 儲存 *  * @param entity * @throws Exception */public void add(T entity) throws Exception {getCurrentSession().save(entity);}/** * 調用預存程序 *  * @param proName * @return */public CallableStatement citePro(final String proName){Session session = getCurrentSession();CallableStatement proc=session.doReturningWork(                new ReturningWork<CallableStatement>() {                    @Override                    public CallableStatement execute(Connection connection) throws SQLException{                    CallableStatement resultSet = connection.prepareCall(proName);                        return resultSet;                    }                }        );return proc;}}</span>



Spring訪問oracle資料庫配置步驟

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.