ネットショッピングモールSSH三者間の糸引き

3132 ワード

ホストと織姫はカササギが橋を架けて、SSHはこのような感じがありますか?あなたたちに出会ってから、あなたたちの間がどんな糸を引いているのか知りたいです.やっとチャンスがあってよくあなたを见て、あなたとすでにしばらくの别れがありますが.
Javaには優秀なフレームワークがたくさんあり、表示層はStruts、JSFなどがあり、持久層はHibernate、EJBなどがあり、各層のオープンソースフレームワークを有機的に統合してソフトウェアシステムの本体フレームワークとして、システムにより良い拡張性とメンテナンス性を持たせる.
Springの開放性は,ほとんどのオブジェクト関係マッピングフレームワークと良好に統合できる.Hibernateがデータ永続化を行う場合、HibernateのSessionインタフェースは、Hibernate Sessionオブジェクトが実装するHibernateのSessionFactoryインスタンスを取得するための基本的なデータアクセス方法を提供します.セッションファクトリは、セッションを開いたり閉じたり管理したりします.セッションファクトリインスタンスを手動で作成するために、Springを使用してセッションオブジェクトを管理したり、宣言トランザクション管理を実装したりします.では、どのように実現したのでしょうか.
SpringのプロファイルでApplicationContext.xmlでHibernateによるSessionFactoryの設定を設定します.コードは次のとおりです.
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource" ref="dataSource"/>
	<!--   hibernate       -->
	<property name="hibernateProperties">
	<props>
	<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
	<prop key="hibernate.show_sql">true</prop>
	<prop key="hibernate.format_sql">true</prop>
	<prop key="hibernate.hbm2ddl.auto">update</prop>
	</props>
	</property>
	<!--   Hibernate      -->
	<property name="mappingResources">
	<list>
	<value>cn/itcast/shop/user/vo/User.hbm.xml</value>
	</list>
	</property>
	</bean>

コンフィギュレーション・ファイルから分かるように、SessionFactoryを宣言的に管理する場合、異なるデータ・ソースで切り替えることができ、永続層サービスが変更され、プログラム・コードは変更する必要がなく、コンフィギュレーション・ファイルを変更するだけでよい.Springのトランザクションメカニズムによる統合管理トランザクション管理:
<!--         -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--        -->

<tx:annotation-driven transaction-manager="transactionManager"/>

Springは、以前に学習したMVCと同様に、コントローラとビジネスロジックコンポーネントの分離を実現するために、StrutsのActionのインスタンス生成をSpringコンテナに渡して管理するのはStrutsではなく、Strutsは単純にコントローラの役割を果たすだけです.StrutsのActionはSpringフレームワーク作成に渡され、デフォルトは複数例であり、Springコンテナはクラス管理時にデフォルト作成は単一例であり、単一例ではスレッドセキュリティの問題が発生しやすいため、クラスscopeプロパティを構成する必要があります.
Springのプロファイルでは、次の操作を行います.
<bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">

</bean>

Strutsのプロファイルでは、次の操作を行います.
<action name="user_*" class="userAction" method="{1}">

</action>

vo、DAO、Service、Actionがシステムの中でどのように調和しているか知っていますか?
開発時には,一般的にエンティティクラスを設計し,オブジェクトが各層間で伝達され,Hibernateを用いてレルムオブジェクトとデータテーブルのマッピング関係をうまく行う.DAOレイヤは、独立してデータを永続化し、Springを使用してHibernateにDAOサポートクラスHibernateDaoSupportを提供することで実現され、各DAOコンポーネントはデータベーステーブルに対応します.サービス層の開発は主に具体的な業務コンポーネントの開発であり、主に各種の業務ロジックを処理するために用いられる.Actionは主にWebリクエストを処理しSpringで管理する.
こうして整理してみると、このStrutsが私たちのカササギ橋なのではないでしょうか.