`

SSH学习记录(6)-整合Hibernate

阅读更多
Spring 中整合Hibernate

1. Spring中加入一个DataSource和一个SessionFactory,搞定。

	<!-- dbcpDataSource ========================================================================== -->

	<bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

		<property name="url" value="jdbc:mysql://localhost:3306/test"/>

		<property name="username" value="root"/>

		<property name="password" value="123456"/>

		<property name="maxActive" value="1000"/>

		<property name="maxIdle" value="5000"/>

		<property name="minIdle" value="5"/>

		<property name="removeAbandoned" value="true"/>

		<property name="removeAbandonedTimeout" value="180"/>

		<property name="maxWait" value="9000"/>

	</bean>



	<!-- sessionFactory ================================================================== -->

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

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

		<property name="hibernateProperties">

			<props>

				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

		        <prop key="hibernate.show_sql">true</prop>

			</props>

		</property>

	</bean>

2. 现在还没用上,在Logic中加一个SessionFactory的变量和get,set方法。在spring中配置。
package com.zhch.logic;



import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;



import com.learn.hibernate.dto.Student;



public class AOPLogicImpl implements AOPLogic{

	private SessionFactory sessionFactory;

	public String getWord(){

		return "I am aopLogicImpl.";

	}

	public void print(){

		System.out.println("aopLogicImpl print");

	}

	public void saveStudent(){

		try {

			Session session = sessionFactory.openSession();

			Transaction tx = session.beginTransaction();

			for (int i = 0; i < 20; i++) {

				Student customer = new Student();

				customer.setAge(20);

				customer.setName("Li2");

				customer.set_class("three");

				session.save(customer);

			}

			tx.commit();

			session.close();

		} catch (HibernateException e) {

			e.printStackTrace();

		}

	}

	/**

	 * @return the sessionFactory

	 */

	public SessionFactory getSessionFactory() {

		return sessionFactory;

	}

	/**

	 * @param sessionFactory the sessionFactory to set

	 */

	public void setSessionFactory(SessionFactory sessionFactory) {

		this.sessionFactory = sessionFactory;

	}

}







	<!-- hbAction -->

    <bean id="hbAction" class="com.zhch.action.AOPAction">

    	<property name="logic" ref="hbService"/>

    </bean>

    <bean id="hbService" class="com.zhch.logic.AOPLogicImpl">

    	<property name="sessionFactory" ref="sessionFactory"/>

    </bean>


3. Student类和相应的映射文件Student.hbm.xml.(同5中的一样)

4. 在bean sessionFactory中配置对映射文件的引用。

	<!-- sessionFactory ================================================================== -->

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

		<!-- 其它的内容 

		-->

		<property name="mappingResources">

			<list>

				<value>com/zhch/db/dto/Student.hbm.xml</value>

			</list>

		</property>

	</bean>


5. 在Action中添加个hbTest方法调用logic的saveStudent方法,在页面添加个提交到Action的hbTest方法的按钮,测试一下,成功。





附加1:

可以将数据库的相关信息放到一个database.properties文件中统一管理,在spring中引用这个文件。方便数据库切换。

database.properties内容:
database.connection.driver_class=com.mysql.jdbc.Driver

database.connection.url=jdbc:mysql://localhost:3306/test

database.connection.username=root

database.connection.password=123456

database.connection.dialect=org.hibernate.dialect.MySQLDialect


spring中加入:


	<!-- propertyConfigurer ================================================================ -->

	<bean id="propertyConfigurer"

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

		<property name="locations">

			<list>

				<value>/WEB-INF/database.properties</value>

			</list>

		</property>

	</bean>


引用方法:

		<property name="driverClassName" value="${database.connection.driver_class}"/>

		<property name="url" value="${database.connection.url}"/>

		<property name="username" value="${database.connection.username}"/>




附加2: 一个典型的事务AOP的配置,以后用到
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  

		<property name="sessionFactory">  

			<ref local="sessionFactory"/>  

		</property>  

	</bean>  

	 

	<bean id="baseServiceproxyBean" 

		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true">  

		<property name="transactionManager">  

			<ref local="transactionManager"/>  

		</property>  

		<property name="transactionAttributes">  

			<props>  

				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>  

				<prop key="update*">PROPAGATION_REQUIRED</prop>  

				<prop key="delete*">PROPAGATION_REQUIRED</prop>  

				<prop key="save*">PROPAGATION_REQUIRED</prop>  

				<prop key="InitModePopedomInfo">PROPAGATION_REQUIRED</prop>  

				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  

			</props>  

		</property>  

	</bean>	



spring 的注解sessionFactory
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<!--<property name="mappingLocations" value="classpath*:com/creawor/demo/model/*.hbm.xml"/>-->
		
		<!-- packagesToScan可以自动搜索某个package的全部标记@Entity class -->
		<property name="packagesToScan">
			<list>
				<value>com.**.model</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<!--常用数据库方言 MySQL5Dialect,SQLServerDialect,OracleDialect,SybaseDialect,DB2Dialect -->
				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.query.substitutions">true 1, false 0</prop>
				<prop key="hibernate.default_batch_fetch_size">4</prop>
			</props>
		</property>
	</bean>


附加3:

当 Hibernate 遇上 Spring  http://www.ibm.com/developerworks/cn/java/wa-spring2/


分享到:
评论

相关推荐

    SSH学习笔记--整理.rar

    笔记中可能详细介绍了Spring的IoC容器,Bean的生命周期,AOP的应用,Spring MVC的架构,以及如何整合Hibernate和Struts2等内容。 这三份笔记结合在一起,形成了一个全面的SSH学习路径,涵盖了从Web前端到后端数据库...

    SSH笔记-Spring整合Hibernate

    在Spring4中,整合Hibernate主要涉及以下几个步骤: 1. **引入依赖**:首先,你需要在项目中添加Spring和Hibernate的依赖库。这通常通过Maven或Gradle的配置文件完成,确保包含Spring的上下文支持和Hibernate的核心...

    SSH整合jar包-spring5.0+hibernate5.1+struts2.5

    2. Hibernate的主库及其依赖(如hibernate-core、hibernate-entitymanager等) 3. Struts2的核心库和插件(如struts2-core、struts2-convention-plugin、struts2-json-plugin等) 4. 其他可能的依赖库,如log4j、...

    SSH笔记-整合Spring2、Struts2、Hibernate4

    7. **整合Hibernate和Spring**:通过SessionFactoryBean在Spring中创建SessionFactory,配置数据源,使用HibernateTemplate或JPA进行数据访问。 8. **测试**:编写测试用例,确保各个组件能正常工作,如Action、...

    SSH整合学习笔记之spring与hibernate简单整合之源码

    SSH整合学习笔记之spring与hibernate简单整合的源码---对应我的博客文章 http://blog.csdn.net/wanghantong/article/details/6653482

    SSH整合jar包--spring4.1.5 hibernate4.3.1 struts2.2.1

    SSH整合是Java Web开发中的一种常见技术组合,指的是Spring、Struts2和Hibernate这三大框架的集成应用。这个压缩包包含的是Spring 4.1.5、Hibernate 4.3.1和Struts2.2.1的核心库,用于帮助开发者快速搭建基于这些...

    SSH整合学习笔记之spring与hibernate整合(二)之c3p0

    在本学习笔记中,我们将重点关注Spring与Hibernate的整合,特别是如何利用c3p0作为数据库连接池来提高应用程序的性能和资源管理。 首先,Spring是一个强大的轻量级框架,它提供了依赖注入(DI)和面向切面编程(AOP)等...

    ssh三大框架jar包

    - `hibernate-core.jar`:Hibernate的核心库,包含了实体管理、会话工厂和查询API。 - `hibernate-validator.jar`:用于进行数据校验。 - `javassist.jar`:Hibernate使用该库来动态生成类的字节码。 - `mysql-...

    SSH整合的jar包之hibernate3.6

    SSH整合是Java Web开发中的一种常见技术组合,指的是Spring、Struts和Hibernate这三个开源框架的集成。在本场景中,我们关注的是SSH整合中的Hibernate3.6版本,它是一个强大的对象关系映射(ORM)框架,能够将数据库...

    SSH整合hibernate完整jar包

    SSH整合Hibernate是一个常见的Java Web开发框架组合,它结合了Struts、Spring和Hibernate三大开源框架的优势,用于构建高效、灵活且可维护的Web应用程序。在这个整合中,Hibernate作为持久层框架,负责对象关系映射...

    ssh整合jar包-4.3.9.zip

    在这个"ssh整合jar包-4.3.9.zip"压缩文件中,包含了这三个框架的特定版本,即Struts2、Hibernate5和Spring 4.3.9的所有必需jar包。 1. **Struts2**: Struts2是基于MVC(Model-View-Controller)设计模式的Web应用...

    SSH整合-实例-用户登录-CRUD

    SSH整合是Java Web开发中的一种常见模式,它结合了Struts、Hibernate和Spring三个框架,以实现高效、灵活和模块化的应用。在这个实例中,我们将深入理解如何将这些框架集成来处理用户登录以及进行基本的CRUD(创建、...

    SSH框架整合spring4+hibernate4+struts2

    3. **Hibernate4的库**:包括hibernate-core、hibernate-entitymanager等,提供ORM功能。 4. **数据库驱动**:如mysql-connector-java,用于连接特定类型的数据库。 5. **其他依赖库**:如log4j、commons-lang3等,...

    SSH整合示例-薛小冉原创

    SSH整合是Java Web开发中的一种常见模式,全称为Struts2、Spring和Hibernate的集成。这个集成框架在传统的MVC(Model-View-Controller)架构基础上,提供了强大的控制层(Struts2)、业务逻辑层(Spring)和持久化层...

    SSH框架综合应用-简单的在线学习系统

    通过学习这个项目,你可以了解到如何整合SSH框架,理解它们之间的协作机制。同时,你还可以学习到如何设计和实现在线学习系统的关键功能,如用户认证、课程管理、学习进度跟踪等。此外,这个项目也会帮助你提升...

    SSH学习笔记3 SSH学习笔记3

    SSH学习笔记3主要聚焦于三个Java企业级开发框架——STRUTS、SPRING和HIBERNATE的集成与应用。这三个框架是Java后端开发中非常重要的组件,它们各自负责不同的层面,共同构建了一个强大的MVC(Model-View-Controller...

    ssh------实例

    这个压缩包文件可能包含了一个完整的SSH框架整合示例项目,供开发者学习和参考。 **Spring框架**是IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)的优秀实现。Spring的...

    记录-笔记-用ANT构建-struts-spring-hibernate

    标题 "记录-笔记-用ANT构建-struts-spring-hibernate" 暗示了这篇笔记主要涉及使用Apache Ant工具来构建一个整合了Struts、Spring和Hibernate的Java Web项目。Struts是MVC(模型-视图-控制器)框架,Spring是全面的...

    SSH框架整合实战教程----读书笔记(七)源码

    SSH框架整合实战教程读书笔记(七)主要聚焦于Spring、Struts和Hibernate这三大Java Web开发框架的集成应用。在本教程中,我们将深入探讨如何将这三个强大的工具结合在一起,以构建高效、可维护的Web应用程序。源码...

Global site tag (gtag.js) - Google Analytics