`

Spring集成Hibernate写SQLServer

 
阅读更多
一、需求:由于本人要做一个集中告警服务端,所以需要接收HTTP请求,然后把收到的数据记录到SQLServer数据库中。
二、实现方式:使用SpringMVC接收HTTP请求,能同时接收GET和POST的请求,然后使用hibernate来存储数据信息。
三、主要实现:
1.数据库建表脚本。
CREATE TABLE [Log_SimpleMonitor](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[CityName] [varchar](32) NOT NULL,
	[MonitorTime] [datetime] NOT NULL,
	[IsSuccess] [bit] NOT NULL DEFAULT ((0)),
	[MonitorLevel] [varchar](16) NOT NULL DEFAULT ('INFO'),
	[DetailContent] [varchar](2048) NOT NULL,
	[CreateTime] [datetime] NOT NULL
) 

2.生成的数据库表影射类,用到了hibernate的注解方式,不再使用hbm映射文件。
package com.ajita.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "Log_SimpleMonitor")
public class Log_SimpleMonitor implements Serializable {
	@Id
	@Column(name = "ID")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;
	@Column(name = "CityName")
	private String cityName;
	@Column(name = "MonitorTime")
	private Date monitorTime;
	@Column(name = "IsSuccess")
	private boolean isSuccess;
	@Column(name = "MonitorLevel")
	private String MonitorLevel;
	@Column(name = "DetailContent")
	private String message;
	@Column(name = "CreateTime")
	private Date createTime;

	//getters and setters
}

3.spring集成hibernate的主要配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="..."
	default-lazy-init="true">

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName">
			<value>net.sourceforge.jtds.jdbc.Driver</value>
		</property>
		<property name="url">			<value>jdbc:jtds:sqlserver://localhost:1433/mydb</value>
		</property>
		<property name="username">
			<value>sa</value>
		</property>
		<property name="password">
			<value>123456</value>
		</property>
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="packagesToScan">
			<value>com.ajita.entity</value>
		</property>
		<!-- <property name="mappingResources"> <list> <value>user.hbm.xml</value> 
			</list> </property> -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
	</bean>

	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- 使用注解,在beans标签中添加context命名空间及其对应的schemaLocation -->
	<context:annotation-config />
	<context:component-scan base-package="com.ajita.*" />

</beans>

4.使用springMVC接收HTTP请求请参考之前的一篇日志
http://ajita.iteye.com/admin/blogs/1396264 。
5.收到HTTP请求后的主要存储逻辑。一般情况下,会把数据库操作的方法再封装到一个dao类中,但是由于本测试代码只涉及到一个存储的过程,很简单,所以直接把spring的hibernateTemplate注解到接收到HTTP后的处理逻辑中了。
package com.ajita.controller;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.ajita.entity.Log_SimpleMonitor;

@Controller
public class SimpleMoniorLogReceiver {
	private HibernateTemplate hibernateTemplate;

	@Autowired
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	@RequestMapping("/submitsimplemonitorlog.do")
	public void receive(
			Model model,
			HttpServletRequest request,
			@RequestParam(value = "cityname", required = false) String cityName,
			@RequestParam(value = "monitortime", required = false) String monitorTime,
			@RequestParam(value = "issuccess", required = false) String isSuccess,
			@RequestParam(value = "level", required = false) String level,
			@RequestParam(value = "message", required = false) String message,
			HttpServletResponse response) throws ParseException {
		try {
			ServletOutputStream stream = response.getOutputStream();
			if (level == null || message == null || cityName == null
					|| monitorTime == null || isSuccess == null) {
				stream.print("ERROR");
				stream.close();
				return;
			}

			Log_SimpleMonitor monitorLog = new Log_SimpleMonitor();
			monitorLog.setCityName(cityName);
			monitorLog.setMonitorTime(new Date());
			monitorLog.setMonitorLevel(level);
			monitorLog.setMessage(message);
			monitorLog.setSuccess(Boolean.parseBoolean(isSuccess));
			monitorLog.setCreateTime(new Date());
			DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
			monitorLog.setMonitorTime(dateFormat.parse(monitorTime));
			hibernateTemplate.save(monitorLog);

			stream.print("SUCCESS");
			stream.close();
		} catch (IOException ex) {
		}
	}
}

6.完整代码见附件。可以直接生成war文件,发布到Tomcat下部署就行。
我本机的HTTP的GET方式测试的URL为:http://localhost:8080/SimpleTest/submitsimplemonitorlog.do?level=2&message=gaojing&issuccess=true&cityname=anhui&monitortime=20120221051223
另外,代码中还包含了一个只使用hibernate(没有集成到spring)来存日志的测试类(可以删掉,只是我最初测试时候用的)。
分享到:
评论

相关推荐

    strut2+spring+hibernate +sqlserver2005

    这个名为"SS2HTEST"的压缩包文件,很可能包含了一个完整的Web项目,演示了如何将Struts2、Spring和Hibernate整合,并与SQL Server 2005数据库协同工作,实现一个基本的登录功能。以下是对这些技术的详细解释: 1. *...

    Spring+Hibernate+SQL Server 电子商城

    本项目"Spring+Hibernate+SQL Server 电子商城"便是一个典型的案例,它利用了Spring框架作为应用的基础架构,Hibernate作为对象关系映射工具,以及SQL Server作为数据库管理系统。下面我们将深入探讨这些技术在构建...

    欣想电子商城(spring+Hibernate+sqlServer)

    《欣想电子商城:Spring+Hibernate+SQL Server的实践与解析》 欣想电子商城是一个基于Java技术栈的电子商务平台,其核心技术选用了Spring、Hibernate和SQL Server这三大组件,构建了一个功能完善的在线购物系统。这...

    Struts2.2.3 Spring3.0.5 Hibernate3.6.5 sql server整合实例源码呈现

    Struts2.2.3、Spring3.0.5、Hibernate3.6.5与SQL Server的整合是Java Web开发中的常见技术栈,这个实例源码呈现了一个完整的整合过程,适用于初学者和开发者进行学习与参考。以下是这些技术在实际应用中的详细知识点...

    Struts2+Hibernate3.2+spring2.0+sqlserver2000

    Struts2、Hibernate3.2、Spring2.0和SQL Server 2000是Java Web开发中的四个关键组件,它们构成了一个强大的企业级应用框架,通常被称为SSH2(Struts2、Spring2、Hibernate2)集成框架。下面将详细阐述这些技术以及...

    J2EE框架项目(Struts2,Hibernate3,Spring3,SqlServer2005)

    SSH框架,全称为Struts2、Hibernate3和Spring3,是Java EE开发中常用的一套集成框架,用于构建高效、可扩展的企业级应用程序。这个压缩包文件包含了使用SSH框架进行项目开发的相关资源,以及可能的数据库脚本(Sql)...

    easyui-1.5+springMVC+Hibernate+SqlServer2012

    【标题】"easyui-1.5+springMVC+Hibernate+SqlServer2012" 涉及的是一个基于Web开发的技术栈,主要由四部分组成:EasyUI、Spring MVC、Hibernate以及Microsoft SQL Server 2012。这个组合在IT行业中常用于构建高效、...

    SSH2整合(Struts2+Spring+Hibernate)+SQL Server2008案例

    SSH2整合,即Struts2、Spring和Hibernate的集成,是Java Web开发中常见的技术栈,主要用于构建高效、模块化且可维护的Web应用程序。在这个案例中,SSH2与SQL Server2008数据库结合,提供了完整的MVC(模型-视图-控制...

    SpringBoot+hibernate+mysql+sqlserver双数据源

    在SpringBoot中,通过Spring Data JPA,我们可以方便地集成Hibernate,实现数据的CRUD(创建、读取、更新、删除)操作。在双数据源的场景下,Hibernate可以分别配置两个不同的数据源,从而实现数据在不同数据库间的...

    struts/hibernate/spring/sqlserver2005的包

    Struts、Hibernate、Spring 和 SQL Server 2005 是Java Web开发中四个非常关键的组件,它们在构建企业级应用程序时发挥着重要作用。 Struts 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,主要...

    Spring+Hibernate整合

    总的来说,"Spring+Hibernate整合+SQL Server2008"是一个典型的Java企业级应用开发模式,它涵盖了Spring框架的管理能力、Hibernate的ORM功能以及SQL Server的数据库服务,为开发人员提供了一种高效、稳定且易于维护...

    SSH整合源码(Struts+Spring+Hibernate整合用户注册例子)

    SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...

    JSF集成Spring、Hibernate

    指的是为了运行JSF、Spring和Hibernate集成的项目,需要包含所有相关的库文件,如JSF的实现库、Spring的核心库、Hibernate的JAR文件,以及可能需要的其他依赖,如JDBC驱动(对于连接SQL Server数据库)。 **Tomcat6...

    搭建WEBWORK+SPRING+HIBERNATE框架

    【搭建WEBWORK+SPRING+HIBERNATE框架】是一个集成三大流行开源框架的过程,用于构建高效、可扩展的企业级Web应用。以下是详细的步骤和知识点: 1. **开发环境配置**: - 使用MyEclipse 5.5.1 GA作为开发工具,它...

    struts+hibernate+spring+sqlserver2005

    Struts、Hibernate、Spring 和 SQL Server 2005 是Java Web开发中常见的技术栈,它们各自在应用程序架构中承担着不同的角色。本项目将这些技术整合在一起,为开发高效、灵活的企业级应用提供了基础。 Struts 是一个...

    JSF+Spring+Hibernate小例子

    在JSF+Spring+Hibernate的组合中,Hibernate作为数据访问层,负责将Java对象映射到数据库中的表,处理SQL查询和更新操作。开发者可以通过配置Hibernate的实体类和映射文件,实现数据的CRUD(创建、读取、更新、删除...

    Spring Struts Hibernate的简介

    - 在SSH框架中,Spring作为业务层的核心,管理对象的生命周期和依赖关系,可以集成Struts的Action,处理事务管理,以及提供数据访问抽象,如Hibernate。 3. **Hibernate**: - Hibernate是一个对象关系映射(ORM...

    struts2+spring4+hibernate

    至于Apache Tomcat,它是广泛使用的Java Servlet和JavaServer Pages(JSP)容器,也是Struts2、Spring4和Hibernate运行的基础。在这个压缩包中包含的Apache Tomcat 8.0.47是Tomcat的一个版本,它提供了运行Java Web...

Global site tag (gtag.js) - Google Analytics