<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    1Spring上下文中配置SessionFactory

    通過上文的描述,可以知道,Spring使用JdbcTemplate時必須和特定的數據源進行綁定。而在Hibernate中,數據源是對用戶屏蔽的,它使用一個稱為“Session”的強勁武器。

    Session具有建立或取消對象的持久關聯、同步對象狀態和數據庫以及事務管理等等復雜功能。SessionHibernate的核心概念,就如同SqlMap與之IBatis一樣。Session的創建依賴于HibernateSessionFactorySessionFactorySession一樣,也是Hibernate的核心組件。

    IBatis的整合方式一樣,Spring會將Hibernate基本配置文件中的數據源屬性抽離到Spring自身的配置文件中,以提供統一的數據源管理和注射。

    首先,給出Hibernate的配置文件,如代碼10.19所示。

    代碼10.19 hibernate.cfg.xml

    <?xml version='1.0' encoding='utf-8'?>

    <!DOCTYPE hibernate-configuration PUBLIC

    ??????? "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    ??????? "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>

    <session-factory>

    <!-- Database connection settings -->

    <!--??? <property name="connection.driver_class">-->

    <!--????? org.postgresql.Driver-->

    <!--??? </property>-->

    <!--??? <property name="connection.url">-->

    <!--????? jdbc:postgresql://1210.0.0.1:5432/hibernate-->

    <!--??? </property>-->

    <!--??? <property name="connection.username">postgres</property>-->

    <!--??? <property name="connection.password">1111</property>-->

    ??? <!-- SQL dialect -->

    ??? <property name="dialect">

    ????? org.hibernate.dialect.PostgreSQLDialect

    ?? </property>

    ??? <!-- Echo all executed SQL to stdout -->

    ??? <property name="show_sql">true</property>

    ??? <!-- Drop and re-create the database schema on startup -->

    ??? <property name="hbm2ddl.auto">create</property>

    ??? <mapping resource="chapter7/hibernate/domain/Category.hbm.xml" />

    ??? <mapping resource="chapter7/hibernate/domain/Product.hbm.xml" />

    </session-factory>

    </hibernate-configuration>

    注意,代碼10.19中被注釋掉的部分,它將被抽離到了Spring的上下文配置文件,而其余部分則暫時保持不變。

    下面給出Spring的配置文件,如代碼10.20所示。

    代碼10.20 dataAccessContext-local.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>

    <bean id="propertyConfigurer"

    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    ??? <property name="locations">

    ????? <list>

    ??????? <value>classpath:jdbc.properties</value>

    ????? </list>

    ??? </property>

    </bean>

    <bean id="dataSource"

    class="org.apache.commons.dbcp.BasicDataSource"

    destroy-method="close">

    ??? <property name="driverClassName" value="${jdbc.driverClassName}"/>

    ??? <property name="url"

    ??? value="jdbc:postgresql://127.0.0.1:5432/hibernate"/>

    ??? <property name="username" value="${jdbc.username}"/>

    ??? <property name="password" value="${jdbc.password}"/>

    </bean>

    <bean id="sessionFactory"

    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    ??? <property name="dataSource" ref="dataSource"/>

    ??? <property name="configLocations">

    ????? <value>chapter7/spring/hibernate/hibernate.cfg.xml</value>

    ??? </property>

    <!--??? <property name="mappingResources">-->

    <!--????? <list>-->

    <!--??????? <value>chapter7/hibernate/domain/Category.hbm.xml</value>-->

    <!--??????? <value>chapter7/hibernate/domain/Product.hbm.xml</value>-->

    <!--????? </list>-->

    <!--??? </property>-->

    <!--??? <property name="hibernateProperties">-->

    <!--????? <props>-->

    <!--??????? <prop key="hibernate.dialect">

    ???????????????? org.hibernate.dialect.PostgreSQLDialect

    ?????????????? </prop>-->

    <!--??????? <prop key="show_sql">true</prop>-->

    <!--??????? <prop key="hbm2ddl.auto">create</prop>-->

    <!--????? </props>-->

    <!--??? </property>-->

    </bean>

    </beans>

    可以發現,從代碼10.19抽離出的數據源,現在換成了ApacheDBCP連接池。當然,也可以換作其他實現,比如從一個JNDI上獲取的數據源:

    <bean id="dataSource"

    class="org.springframework.jndi.JndiObjectFactoryBean">

    ??? <property name="jndiName" value="java:comp/env/jdbc/myds"/>

    </bean>

    Spring提供了LocalSessionFactoryBean來創建本地的Hibernate SessionFactory,這就類似于上節中介紹的SqlMapClientFactoryBean(它用以創建IBatisSqlMap)。當然也可以創建綁定在JNDI上的SessionFactory,不過這通常只在EJB環境下使用。

    注意:代碼10.20中被注釋掉的部分,如果不使用LocalSessionFactoryBeanconfigLocations屬性讀取Hibernate的原生配置文件,可由SpringLocalSessionFactoryBean負責配置Hibernate,它和hibernate.cfg.xml的作用完全一致,這時候就不需要Hibernate的原生配置了。

    posted on 2009-07-27 01:50 jadmin 閱讀(89) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中文字幕免费在线看| 猫咪免费观看人成网站在线| baoyu777永久免费视频| 高清在线亚洲精品国产二区| 亚洲精华国产精华精华液| 免费爱爱的视频太爽了| 国产精品国产亚洲区艳妇糸列短篇 | 日韩精品久久久久久免费| 亚洲一区二区在线免费观看| 91人人区免费区人人| 亚洲另类自拍丝袜第1页| 57PAO成人国产永久免费视频 | 九九全国免费视频| 丝袜熟女国偷自产中文字幕亚洲| 久久久久久久久久免免费精品| 狠狠色婷婷狠狠狠亚洲综合| 免费无码又爽又刺激高潮软件| 亚洲AV人无码综合在线观看| 久久久99精品免费观看| 亚洲丝袜中文字幕| 国产禁女女网站免费看| 成在线人免费无码高潮喷水| 亚洲免费视频在线观看| 免费看韩国黄a片在线观看| 成a人片亚洲日本久久| 亚洲午夜福利AV一区二区无码| 一级毛片在线观看免费| 亚洲欧美日韩中文字幕在线一区| 亚洲AV无码乱码在线观看性色扶| 99久久成人国产精品免费| 亚洲国产成人久久三区| 国产一级淫片a免费播放口之| 成人免费777777被爆出| 亚洲女人初试黑人巨高清| 国产又黄又爽又猛的免费视频播放 | 亚洲成A人片在线播放器| 亚洲AV无码乱码在线观看| 久草免费福利资源站| 久久精品熟女亚洲av麻豆| 亚洲AV中文无码乱人伦下载| 免费无码不卡视频在线观看|