`

Spring4学习(四)Spring4中整合Hibernate4

阅读更多

        Spring4.2.8版本官方文档说明,这一版本的Spring强烈建议使用Hibernate5,而且Hibernate3.6版本以上才支持,低版本的Hibernate只好选择与之相适应的Spring版本,此例中采用Hibernate4.3.11版本。

        Hibernate配置文件,由于使用Spring,数据库连接池等配置可以有选择配置到spring文件中,这样Hibernate配置文件就可以尽可能简化。

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>
		<!-- <property name="current_session_context_class">jta</property> -->
		
        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</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">update</property>
        
		<!-- maping 可以在spring中配置 -->
        <!-- <mapping resource="conf/hibernate/domain/Music.hbm.xml"/> -->
	
		<!-- <mapping class="org.lian.domain.Group" /> -->
		
    </session-factory>

</hibernate-configuration>

        需要指出的是上面的hibernate配置文件是可选的,可以完全将配置文件内容配置到spring文件。

        Spring配置文件  分两步配置  第一配置数据源 第二配置SessionFactory 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
	<!-- 使用spring注解  -->
   <!--  <context:annotation-config/> -->
    <!-- 下面的配置告诉spring容器自动scanner用注解标注bean -->
   <context:component-scan base-package="org.lian"/>
<!--配置数据源  -->
	<!-- <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean> -->
    <!-- 配置Druid数据库连接池 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">   
	    <!-- 基本属性 url、user、password -->  
	    <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>     
	    <!-- 配置初始化大小、最小、最大 -->  
	    <property name="initialSize" value="1" />  
	    <property name="minIdle" value="1" />   
	    <property name="maxActive" value="20" />  
	   
	    <!-- 配置获取连接等待超时的时间 -->  
	    <property name="maxWait" value="60000" />  
	   
	    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
	    <property name="timeBetweenEvictionRunsMillis" value="60000" />  
	   
	    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
	    <property name="minEvictableIdleTimeMillis" value="300000" />  
	    
	    <property name="validationQuery" value="SELECT 'x'" />  
	    <property name="testWhileIdle" value="true" />  
	    <property name="testOnBorrow" value="false" />  
	    <property name="testOnReturn" value="false" />  
	   
	    <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  
	    <property name="poolPreparedStatements" value="true" />  
	    <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />  
	   
	    <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->  
	    <property name="filters" value="stat" />   
	</bean>
	<!-- 配置Hibernate SessionFactory -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="false">
        <!-- 注入datasource,给sessionfactoryBean内setdatasource提供数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:conf/hibernate/hibernate.cfg.xml"></property>
        <!-- //加载实体类的映射文件位置及名称 -->
        <property name="mappingLocations" value="classpath:conf/hibernate/domain/*.hbm.xml"></property>
        
        <property name="packagesToScan" value="org.lian.**.domain"></property>
    	
    </bean>  
      
    <context:property-placeholder location="classpath*:conf/datasource/jdbc.properties"/>
</beans>

         Dao层中使用SessionFactory

@Repository("musicH4Dao")
public class MusicH4DaoImpl implements MusicDao {

	@Autowired
	private SessionFactory sessionFactory;

	@Override
	public String get(Music music) {
		Session session = sessionFactory.openSession();
		try {
			String sql = "from Music as music where music.id = :id ";
			Music bean = (Music) session.createQuery(sql)
					.setParameter("id", music.getId()).uniqueResult();
			return GsonUtil.getInstance().convertToJson(bean);
		} finally {
			session.close();
		}
	}

	@Override
	public String list(Music music) {
		String sql = "from Group as group where group.id = :id ";
		Session session = sessionFactory.openSession();
		try {
			@SuppressWarnings("unchecked")
			List<Group> list = session.createQuery(sql)
					.setParameter("id", music.getId()).list();
			return GsonUtil.getInstance().convertToJson(list);
		} finally {
			session.close();
		}
	}

	

}

     测试代码

public class Main {
	public static void main(String[] args) {
		String classPath = "classpath*:conf/spring/app_hibernate.xml";
		ApplicationContext context = new ClassPathXmlApplicationContext(classPath);
		MusicDao dao = context.getBean("musicH4Dao", MusicDao.class);
		Music music = new Music();
		music.setId("123");
		System.out.println(dao.get(music));
		music.setId("297ed3f359058806015905880d110000");
		System.out.println(dao.list(music));
	}

}

 

分享到:
评论

相关推荐

    Spring4+SpringMVC4+Hibernate4整合源码

    5. **源码分析**:对于"Spring4+SpringMVC4+Hibernate4整合源码",研究这些源码可以帮助开发者深入理解三大框架的内部工作原理,学习如何配置和使用它们进行实际项目开发。通过源码,你可以看到如何配置Spring的...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...

    spring4+springmvc4+hibernate4 整合

    在本项目"spring4+springmvc4+hibernate4 整合"中,我们将探讨这三者的集成过程,以及它们如何协同工作来构建高效、可维护的Web应用程序。 **Spring Framework 4** Spring 是一个全面的Java应用框架,提供依赖注入...

    spring4+hibernate4整合例子

    在Spring4中整合Hibernate4,可以利用Spring的Transaction Management来处理事务,无需在代码中显式调用事务开始和提交。 在这个整合例子中,你需要配置Spring的ApplicationContext,定义数据源、SessionFactory...

    springmvc spring hibernate整合Demo

    Spring MVC、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们分别用于Web开发、依赖管理和持久层操作。这个"springmvc spring hibernate整合Demo"旨在帮助初学者理解如何将这三个框架协同工作,实现一个...

    Spring+hibernate整合源代码

    这个“Spring+hibernate整合源代码”应该包含了实现上述整合步骤的示例代码,可以作为学习和参考的资源。通过学习和实践这些代码,你可以更好地理解和掌握 Spring 和 Hibernate 整合的细节,提升你的 Java Web 开发...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...

    Struts2Spring4Hibernate4整合

    Struts2、Spring4和Hibernate4是Java Web开发中的三大框架,它们的整合是构建高效、灵活的企业级应用的常用方式。在这个SSH(Struts2-Spring-Hibernate)整合的DEMO中,我们主要探讨如何将这三个框架无缝连接,实现...

    Spring3整合Hibernate4测试Demo

    通过学习和实践这个"Spring3整合Hibernate4测试Demo",初学者可以深入了解Spring和Hibernate的整合,掌握如何在实际项目中运用这两个框架,为后续的Java Web开发打下坚实基础。在探索过程中,应注重理解每一个配置的...

    springMVC4+Hibernate4整合例子

    首先,SpringMVC4整合Hibernate4的主要目标是将Spring的依赖注入(DI)和控制反转(IOC)特性与Hibernate的数据持久化能力结合起来,提供一个高效、灵活的Web应用解决方案。 1. **项目结构**:在Maven项目中,我们...

    Spring与Hibernate整合

    SSH整合,即Struts、Spring和Hibernate的集成,是Java Web开发中常见的一种技术栈,它能有效地解决MVC模式下的业务逻辑处理和数据持久化问题。本篇将详细介绍Spring3.3与Hibernate2.1整合的过程及其相关知识点。 ...

    spring famework4整合hibernate4示例代码

    Spring Framework 4 与 Hibernate 4 的整合是Java开发中常见的技术组合,它们共同构建了高效、灵活的企业级应用。Spring 提供了丰富的容器管理、依赖注入以及AOP(面向切面编程)等功能,而Hibernate则是一个强大的...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...

    hibernate与spring整合demo

    将Hibernate与Spring整合可以充分利用两者的优点,提高开发效率并降低复杂性。 一、Hibernate概述 Hibernate是Java世界中领先的ORM框架之一,它允许开发者用Java对象来操作数据库记录,而无需编写SQL语句。通过配置...

    spring4+hibernate4+security4整合

    2. **整合Hibernate**:通过Spring的HibernateTemplate或SessionFactoryBean,可以在Spring容器中管理Hibernate的Session。这样,我们可以在Service层使用这些bean来执行数据库操作,而无需直接操作SessionFactory。...

    spring整合hibernate示例代码

    标题"spring整合hibernate示例代码"提示我们,我们将讨论如何在实际项目中结合这两个框架。Spring可以帮助管理Hibernate的SessionFactory和Transaction,提供声明式事务管理,以及通过AOP(面向切面编程)实现更灵活...

    spring4 hibernate4 springmvc整合jar包下载

    在Hibernate4中,优化了查询性能,增强了对JPA的支持,并引入了第二级缓存。 Spring MVC是Spring框架的一个模块,它提供了MVC架构来组织Web应用。通过DispatcherServlet,请求会被分发到相应的处理器,然后返回视图...

    Spring整合Hibernate案例

    在本文中,我们将深入探讨如何将Spring框架与Hibernate ORM(对象关系映射)框架整合,以便在实际项目中实现高效、灵活的数据访问层。Spring以其强大的依赖注入和管理能力,结合Hibernate的数据库操作功能,可以构建...

    Spring MVC4+Hibernate4整合

    提及的“整合多位大神资料”可能包含了社区中流行的整合教程、最佳实践或者是其他开发者分享的经验,这对于初学者理解并掌握Spring MVC和Hibernate的整合非常有帮助。 7. **总结**: Spring MVC和Hibernate的整合...

    SpringMVC+Hibernate+Spring整合实例

    总的来说,"SpringMVC+Hibernate+Spring整合实例"提供了一个全面的学习平台,帮助开发者深入理解Java企业级应用的开发模式和最佳实践。通过这个实例,你可以提升自己的技能,为未来的项目开发打下坚实的基础。

Global site tag (gtag.js) - Google Analytics