`

springmvc和hibernate的整合(annotation)

 
阅读更多

采用sprng MVC开发项目时,通常都会采用注解的方式,这样可以大大提高开发效率,实现零配置。下面从零开始重新做一个spring MVC的配置。这个项目完全采用注解的方式开发。

第一步,导入springhibernatejar(spring.jar, spring-webmvc.jar, commons-logging-1.0.4.jar。其他jar包为hibernate相关jar)

 

第二步,项目配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>springmvc_004_hibernate_annotation</display-name>
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

第三步,springMVC配置文件spring-mvc.xml(里面包含hibernate的配置信息)

<?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:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-2.5.xsd"
>
	<!-- 对com.test包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
	<context:component-scan base-package="com.test" />
	
	<!-- 数据源 -->
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations" value="classpath:jdbc.properties"></property>
	</bean>
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<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>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<!-- key的名字前面都要加hibernate. -->
<!-- 				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> -->
				<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>
		<property name="packagesToScan">
			<value>com.test.model</value>
		</property>
	</bean>

	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<!-- 配置事务边界 -->
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

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

	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="find*" read-only="true" propagation="NOT_SUPPORTED" />
			<!-- get开头的方法不需要在事务中运行,有些情况是没有必要使用事务的,比如获取数据。开启事务本身对性能是有一定的影响的 -->
			<tx:method name="*" /><!-- 其他方法在事务中运行 -->
		</tx:attributes>
	</tx:advice>
	
	<aop:config>
		<aop:pointcut id="businessService" expression="execution(public * com.test.service.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" />
	</aop:config>
	
	<!-- 页面View层基本信息设定 -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

</beans>

 

第四步,实体类Employee.java

package com.test.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Employee {
	@Id
	@GeneratedValue
	private int id;
	private String name;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

 

第五步,DAOEmployeeDao.java

package com.test.dao;

import javax.annotation.Resource;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;

import com.test.model.Employee;

@Component("employeeDao")
public class EmployeeDao {
	private HibernateTemplate hibernateTemplate;

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	@Resource(name = "hibernateTemplate")
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	public void add(Employee employee) {
		hibernateTemplate.save(employee);
	}

}

 

第六步,serviceEmployeeService.java

package com.test.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.test.dao.EmployeeDao;
import com.test.model.Employee;

@Component("employeeService")
public class EmployeeService {
	private EmployeeDao employeeDao;

	public EmployeeDao getEmployeeDao() {
		return employeeDao;
	}

	@Resource(name = "employeeDao")
	public void setEmployeeDao(EmployeeDao employeeDao) {
		this.employeeDao = employeeDao;
	}

	public void add(String name) {
		Employee employee = new Employee();
		employee.setName(name);
		employeeDao.add(employee);
	}
}

 

第七步,控制器HelloController.java

package com.test.controller;

import java.io.UnsupportedEncodingException;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.test.service.EmployeeService;

@Controller
@RequestMapping("/employee")
public class EmployeeController {

	private EmployeeService employeeService;

	public EmployeeService getEmployeeService() {
		return employeeService;
	}

	@Resource(name = "employeeService")
	public void setEmployeeService(EmployeeService employeeService) {
		this.employeeService = employeeService;
	}

	@RequestMapping(params = "method=request")
	public String request(String name) {
		try {
			employeeService.add(new String(name.getBytes("iso8859-1"), "GBK"));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return "result";
	}

}

第八步,jsp目录下创建result.jsp文件

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>结果</title>
</head>
<body>
	<h1>success</h1>
</body>
</html>

 

第九步,首页index.jsp文件

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>首页</title>
</head>
<body>
	<form action="employee" method="get">
		<input type="text" name="name">
		<input type="hidden" name="method" value="request">
		<input type="submit" value="提交">
	</form>
</body>
</html>

在浏览器中输入:

http://127.0.0.1:9900/springmvc_004_hibernate_annotation/index.jsp进行测试

 

分享到:
评论

相关推荐

    SpringMVC与Hibernate整合所需jar

    本文将详细介绍SpringMVC与Hibernate整合所需的jar文件以及它们在整合过程中的作用。 首先,我们需要理解SpringMVC的核心组件。它包括DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、...

    SpringMVC+Hibernate+annotation+Easyui权限管理系统

    SpringMVC+Hibernate+annotation+Easyui权限管理系统,Session过期控制(包括Ajax请求的过期控制),访问权限控制(权限控制到按钮),hibernate数据库用户名与密码加密,其它的不说了,绝对物有所值

    spring+springMVC+Hibernate整合

    在IT行业中,Spring、SpringMVC和Hibernate是三个非常重要的框架,它们分别专注于不同领域的功能。Spring是一个全面的Java企业级应用开发框架,提供依赖注入(DI)和面向切面编程(AOP)等核心特性;SpringMVC是...

    SpringMVC Spring Hibernate 框架整合 Annotation Maven Project

    整合SpringMVC、Spring和Hibernate通常涉及以下几个步骤: 1. **配置pom.xml**:引入所需的库依赖,如Spring、SpringMVC、Hibernate、MySQL驱动等。 2. **创建Spring配置文件**:定义Bean,包括DataSource、...

    springmvc + hibernate annotation 配置

    接下来,我们讨论如何将Spring MVC与Hibernate整合,以便在项目中使用注解配置。 1. **依赖管理**:首先,确保在你的项目中添加了Spring MVC和Hibernate的依赖。这通常通过在`pom.xml`文件中配置Maven或者在`build....

    springMVC+Hibernate3整合实例

    里面整合的是springMVC+hibernate3的配置文件和实例,用的是mysql数据库,使用注解annotation,下载后,只需修改jdbc.properties配置文件和加载对应的数据库驱动jar包就可以运行。亲测通过,有问题可以交流。

    springmvc+hibernate+定时器配置实例

    将SpringMVC、Hibernate和定时器整合,通常是在SpringMVC中配置一个定时任务,该任务利用Hibernate进行数据库操作。首先,你需要在SpringMVC的配置文件中添加定时任务的配置,比如使用Spring的TaskExecutor或...

    SpringMVC+Hibernate3+CXF整合详细实例

    上传的文件是springMVC框架整合Hibernate3和CXF的系统,里面有关于springMVC利用cxf发布webservice和调用接口的详细代码,后台用annotation注解关联数据库,dao层完美封装,架构层次分明,用不到cxf的可以到这个链接...

    《SpringMVC从入门到精通》SpringMVC使用hibernate-validator验证需要的jar包

    《SpringMVC从入门到精通》SpringMVC使用hibernate-validator验证需要的jar包 包含hibernate-validator-5.1.0.Final hibernate-validator-annotation-processor-5.1.0.Final,等等都有

    springMVC + spring + hibernate 整合的管理系统小案例

    下载后请修改数据库用户名和密码,即springAnnotation-hibernate.xml文件 案例系统支持功能如下: 注册功能,身份证,邮箱,手机号,姓名等校验,ajax异步获取资源 分页显示,编辑更新,多行删除等更功能,使用了MVC...

    SpringMVC+Hibernate全注解整合

    &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&gt; &lt;value&gt;com.org.entity&lt;/value&gt; &lt;prop key="hibernate....

    SpringMVC-Hibernate-Crud:简单的SpringMVC和Hibernate Crud示例

    在这个"SpringMVC-Hibernate-Crud"项目中,我们将深入探讨如何整合这两个框架,实现一个基本的CRUD(创建、读取、更新和删除)功能。 首先,SpringMVC是Spring框架的一部分,它提供了一个轻量级的控制层,使得...

    hibernate和spring MVC配置整合

    下面我们将详细介绍如何进行hibernate和Spring MVC的配置整合。 ### 1. 引入依赖 首先,你需要在项目中添加Spring MVC和Hibernate的相关依赖。通常在Maven或Gradle的pom.xml或build.gradle文件中,你需要引入以下...

    springMVC3.2+Hibernate4的基本配置

    在本文中,我们将深入探讨如何配置一个基于SpringMVC 3.2和Hibernate 4的基础项目。...这个配置模板对于初学者理解SpringMVC和Hibernate的整合非常有帮助,同时也为开发者提供了一个快速启动新项目的基础。

    整合了SpringMVC security 4.0 hibernate的DEMO

    **整合SpringMVC、Security 4.0与Hibernate的DEMO详解** 在现代Web开发中,SpringMVC作为强大的MVC框架,Security提供了强大的安全控制,而Hibernate则是主流的ORM解决方案。将这三者整合在一起,可以构建出高效且...

    springMVC3和Hibernate3整理笔记

    2. **选择依赖库**:添加`Hibernate3.3Annotation & EntityManager`和`Hibernate3.3Core Libraries`两个依赖库。 3. **添加jar文件**:将这些库文件复制到项目的`WEB-INF/lib`目录下。 #### 六、配置目录结构 项目...

    SSH(springmvc)框架整合

    SSH框架整合指的是Spring、SpringMVC和Hibernate三个开源框架的集成应用,这在Java开发中是一种常见的企业级应用架构。Spring作为基础框架,提供依赖注入(DI)和面向切面编程(AOP)功能;SpringMVC是Spring的Web ...

    springMVC整合的spring整合的

    Spring的核心特性,如依赖注入(DI)和面向切面编程(AOP),使得SpringMVC能够更好地与其他Spring模块集成,如数据访问层(JDBC、Hibernate、MyBatis等)、事务管理等。 在整合SpringMVC和Spring时,我们需要创建...

    springMVC+hibernateValidate

    在SpringMVC中整合Hibernate Validate,可以让验证过程更加便捷和灵活。以下是一个简单的整合步骤: 1. 添加依赖:在项目中引入Hibernate Validate的库,通常会同时包含JSR-303/JSR-349规范实现。 2. 配置SpringMVC...

Global site tag (gtag.js) - Google Analytics