必威体育Betway必威体育官网
当前位置:首页 > IT技术

Spring整合HIbernate和springmvc

时间:2019-08-07 21:13:13来源:IT技术作者:seo实验室小编阅读:76次「手机版」
 

spring hibernate

Spring整合HIbernate和springmvc

在这里插入图片描述

1.导入jar包

<properties>  
    <org.springframework.version>4.2.0.RElease</org.springframework.version>  
  </properties>
  <dependencies>
  	    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.9</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.38</version>
	</dependency>
	<dependency>
	    <groupId>dom4j</groupId>
	    <artifactId>dom4j</artifactId>
	    <version>1.6.1</version>
	</dependency>
	 <!-- spring start -->  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-aop</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-test</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-aspects</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
     <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-jdbc</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-beans</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-test</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-context</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-context-support</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-core</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-expression</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-instrument</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-instrument-tomcat</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-jdbc</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-jms</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-messaging</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-orm</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-oxm</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-test</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-tx</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-web</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-webmvc</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-webmvc-portlet</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-websocket</artifactId>  
        <version>${org.springframework.version}</version>  
    </dependency>  
   	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>${org.springframework.version}</version>
	</dependency>
	<dependency>
	    <groupId>com.mchange</groupId>
	    <artifactId>c3p0</artifactId>
	    <version>0.9.5.2</version>
	</dependency>
	<dependency>
	    <groupId>org.aspectj</groupId>
	    <artifactId>aspectjweaver</artifactId>
	    <version>1.8.10</version>
	</dependency>
	<dependency>
	    <groupId>org.hibernate</groupId>
	    <artifactId>hibernate-core</artifactId>
	    <version>5.2.17.final</version>
	</dependency>
  	 <!-- 引入Servlet的包 -->
	  <dependency>
		  <groupId>javax.servlet</groupId>
		  <artifactId>javax.servlet-api</artifactId>
		  <version>3.1.0</version>
		  <!-- Servlet的包不用发布到Tomcat中,因为Tomcat中有这个包!! -->
		  <scope>provided</scope>
	  </dependency>
	   <!--JSP-->
	  <dependency>
		  <groupId>taglibs</groupId>
		  <artifactId>standard</artifactId>
		  <version>1.1.2</version>
	  </dependency>
	  <dependency>
		  <groupId>javax.servlet.jsp</groupId>
		  <artifactId>javax.servlet.jsp-api</artifactId>
		  <version>2.2.1</version>
		  <scope>provided</scope>
	  </dependency>
	  <dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>jstl</artifactId>
	    <version>1.2</version>
	  </dependency>
	  <dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>2.8.9</version>
	 </dependency>
  </dependencies>

2.配置spring容器

<?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:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
		<!-- 0.加载配置文件 -->
		<context:property-placeholder location="classpath:db.properties"/>
		<!-- 1.扫描包 -->
		<context:component-scan base-package="com.dream">
			<!-- 不扫描注解controller的Bean -->
			<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
			<!-- 不扫描注解为ControllerAdvice的bean -->
			<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
		</context:component-scan>
		<!-- 2.创建数据源 -->
		<bean id="datasource" class="com.mchange.v2.c3p0.CombopooledDataSource">
			<property name="driverClass" value="${driverClass}"></property>
			<property name="jdbcUrl" value="${jdbcUrl}"></property>
			<property name="user" value="${user}"></property>
			<property name="password" value="${password}"></property>
		</bean>
		<!-- 3.配置sessionfactory -->
		<bean id="sessionFactory" class="org.springframework.orm.hibernate5.localSessionFactoryBean">
			<!-- 配置数据源 -->
			<property name="dataSource" ref="dataSource"></property>
			<!-- 配置hibernate属性 -->
			<property name="hibernateProperties">
				<props >
					<prop key="dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
					<prop key="show_sql">true</prop>
					<prop key="format_sql">true</prop>
					<prop key="hbm2ddl.auto">update</prop>
				</props>
			</property>
			<!-- 设置映射包 -->
			<property name="packagestoscan" value="com.dream.bean"></property>
		</bean>
		<!-- 4.配置事务管理器 -->
		<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
			<property name="sessionFactory" ref="sessionFactory"></property>
		</bean>
		<!-- 5.配置事务注解驱动  -->
		<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

3.配置springmvc配置文件

<?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:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
		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-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
	<mvc:annotation-driven />

	<!-- 静态资源放行  放行static文件夹下的资源 -->
	<mvc:resources location="/static/" mAPPing="/static/**" />
	<!-- 1.配置controller包的扫描 -->
	<context:component-scan base-package="com.dream.controller">
		<!-- 扫描注解为Controller的Bean -->
			<context:include-filter  type="annotation" expression="org.springframework.stereotype.Controller"/>
			<!-- 不扫描注解为ControllerAdvice的bean -->
			<context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
	</context:component-scan>
	<!-- 2.配置视图解析器 -->
	<bean id="internalResourceViewresolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	<!--multipartResolver配置 -->
<!-- 	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8"/>
		<property name="maxUploadSize" value="5242880"/>
		<property name="uploadTempDir" value="file:/d:/temp"/>
	</bean> -->

</beans>

4.配置spring容器启动和配置springmvc核心控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>SSH-demo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- The front controller of this Spring web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextconfiglocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<!-- 配置POST乱码问题 -->
	<filter>
		<filter-name>characterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>characterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 配置spring容器启动 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:ApplicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.contextloaderlistener</listener-class>
	</listener>
</web-app>

5.获取session

首先我们需要获取到sessionFactory,因为我们已经在sessionfactory中配置了Factory,所以在dao层我们可以封装一个basedao用来获取SessionFactory

BaseDao.java

public abstract class BaseDao {
	@Autowired
	private SessionFactory factroy;

	public Session getSession() {
		// TODO Auto-generated method stub
		return factroy.getCurrentSession();
	}
}

获取session,我们也不使用前期所使用的opensession方法,因为那样每次都会新开一个连接,需要我们去关闭;而使用getCurrentSession()的时候会去判断当前线程是否有session,如果有就使用,没有再进行创建,并且使用后会自动关闭,**但是必须是在有事务的情况下使用,否则会报异常**。

如果没有使用spring来配置sessionFactory,我们要使用getCurrentSession方法需要在hibernate核心配置文件中加入

thread

相关阅读

城管希 - -! 又来讲Hibernate了

HQL语句查询                // 使用HQL查询表的所有记录 Session session = HibernateUitl.getOpenSession()

7.1 Hibernate:内置生成器 -- assigned

assigned 是 Hibernate 内置的默认生成器策略,应用程序应该对持久化对象的唯一标识符赋值。 特点:可以跨数据库,人为控制主键生成,建

Hibernate状态 (merge,attachDirty,attachClean)

在Hibernate中的对象有三种状态,即:瞬时状态(Transient)、持久状态(Persistent)、脱管状态(Detached)1、瞬时状态(Transient)由new

Hibernate中many-to-one元素配置中的属性简介

通过many-to-one 元素,可以定义一种常见的与另一个持久化类的关联。这种关系模型是多对一关联(实际上是一个对象引用-译注):这个表的

Hibernate4.1之persist方法

public void persist(T entity) {   getSession().persist(entity);   }hibernate4.x的DAO基础类中的方法,在使用过程中遇到很

分享到:

栏目导航

推荐阅读

热门阅读