`
schy_hqh
  • 浏览: 558033 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Spring3与Hibernate进行集成(使用注解)

 
阅读更多

 

首先写POM.xml

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.gc</groupId>
	<artifactId>spring</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.2.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>3.2.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>3.2.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.6.8</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>3.6.1.Final</version>
		</dependency>
		
		<dependency>
	<groupId>javassist</groupId>
	<artifactId>javassist</artifactId>
	<version>3.12.0.GA</version>
</dependency>
            

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.26</version>
		</dependency>

		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
	</dependencies>
</project>

 

applicationContext.xml 配置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"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	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
	     http://www.springframework.org/schema/tx
	     http://www.springframework.org/schema/tx/spring-tx.xsd
	     http://www.springframework.org/schema/aop
	     http://www.springframework.org/schema/aop/spring-aop.xsd">
	
	<context:component-scan base-package="com.gc.spring"/>

	<bean id="myDataSource" 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/gc" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<!-- 引入外部的hibernate配置
		<property name="configLocation">
			<value>classpath:hibernate.cfg.xml</value>
		</property>
		 -->
		<property name="dataSource" ref="myDataSource" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">false</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		<property name="packagesToScan" value="com.gc.spring" />
	</bean>
	
</beans>

 

附:hibernate.cfg.xml

<!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>
		
		<!-- 数据库连接相关 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/gc</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		
		<!-- hibernate特性配置 -->
		<property name="show_sql">true</property> <!-- 打印SQL -->
		<property name="format_sql">false</property> <!-- 格式化SQL -->
		<!--  
		<property name=""></property>
			create-drop:运行时,先创建表,运行结束,删除表
			create:每次运行都先删除已有的表,再创建。测试时,可使用create模式
			update:映射文件和表,如果不对应,则更新
			validate:检查映射文件与数据库中的表是否对应,如果不对应,会报错。经常用这个配置,可提高安全性。
		-->
		<property name="hbm2ddl.auto">update</property>
		
		<property name="hibernate.current_session_context_class">thread</property>
		
		<!-- 配置需要让hibernate进行管理的实体类 -->
		<mapping class="com.gc.spring.transaction.Log"/>
		<mapping class="com.gc.spring.transaction.User"/>
	</session-factory>
</hibernate-configuration>

  

定义实体

将id属性提取出来,抽取到父类中,然后子类进行继承

package com.gc.spring.transaction;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public class BaseEntity {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;

	public int getId() {
		return id;
	}

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

 

package com.gc.spring.transaction;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name="user")
public class User extends BaseEntity {
	
	@Column(name="name",length=50)
	private String name;

	public User() {
		super();
	}

	public User(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

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

 

package com.gc.spring.transaction;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;

@Entity
public class Log extends BaseEntity {
	
	/**
	 * 日志类别
	 * 操作日志:  调用哪些方法
	 * 安全日志: 登录
	 * 事件日志:  发送消息
	 */
	@Column
	private String type;
	
	@Column
	private String detail;
	
	@Column
	private Date time;
	
	public Log() {
		
	}

	public Log(String type, String detail, Date time) {
		this.type = type;
		this.detail = detail;
		this.time = time;
	}


	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getDetail() {
		return detail;
	}

	public void setDetail(String detail) {
		this.detail = detail;
	}

	public Date getTime() {
		return time;
	}

	public void setTime(Date time) {
		this.time = time;
	}
	
}

 

定义DAO层

 

抽取一个父类,用来处理sessionFactory的注入问题

 

package com.gc.spring.transaction;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;

@Component
public class BaseDao extends HibernateDaoSupport {
	
	/**
	 * 将sessionFactory设置到HibernateDaoSupport中
	 * @param sessionFactory
	 */
	@Autowired
	public void setSessionFactory0(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
	}
	
}

 

 

package com.gc.spring.transaction;

public interface UserManager{
	
	public void addUser(User user);
}

 

package com.gc.spring.transaction;

import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

@Repository("userManager")
public class UserManagerImpl extends BaseDao implements UserManager {
	
	@Resource
	private LogManager logManager;

	public void addUser(User user) {
		this.getHibernateTemplate().save(user);
		logManager.addLog(new Log("操作日志","添加用户",new Date()));
	}

}

 

package com.gc.spring.transaction;

public interface LogManager {
	public void addLog(Log log);
}

 

package com.gc.spring.transaction;

import org.springframework.stereotype.Repository;

@Repository("logManager")
public class LogManagerImpl extends BaseDao implements LogManager {
	
	public void addLog(Log log) {
		this.getHibernateTemplate().save(log);
	}

}

 

打完收工

 

	public void testHib() {
		UserManager manager = context.getBean("userManager",UserManager.class);
		manager.addUser(new com.gc.spring.transaction.User("dsfa"));
	}

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Spring与Hibernate集成

    **Spring与Hibernate集成详解** 在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全方位的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)以及各种服务管理功能。而...

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

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...

    Spring2 Hibernate3集成

    通过其强大的模块化设计,Spring能够轻松地与其他技术栈进行集成,如本案例中的Hibernate。 - **Hibernate框架**:作为一个开放源码的对象关系映射(ORM)解决方案,Hibernate提供了从Java类到数据库表的映射,以及...

    非注解Springmvc+spring+hibernate 入门实例

    总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...

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

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...

    Spring3+Struts2+Hibernate3 全注解集成开发

    在这个"Spring3+Struts2+Hibernate3 全注解集成开发"项目中,我们将深入探讨如何使用这三个框架的注解版本进行集成,以实现对Emp表的操作。 首先,Spring3是依赖注入(DI)和面向切面编程(AOP)的优秀框架。在全...

    Struts2 Spring3.0 Hibernate3.3 整合全注解配置用的数据库

    Spring还支持使用`@Transactional`进行事务管理,确保数据库操作的一致性。 Hibernate3.3是一个强大的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过注解,我们可以在实体类上使用`@Entity`...

    SpringMVC+Spring3+hibernate4集成必备jar包

    5. **编写代码**:实现业务逻辑,使用Spring的注解进行依赖注入,通过Hibernate操作数据库。 这些jar包的集成为开发者提供了一个强大的开发环境,使得我们可以轻松地处理Web请求、业务逻辑和数据库交互。理解并掌握...

    spring4集成hibernate3:xml方式

    本文将深入探讨如何在Spring 4中集成Hibernate 3,以XML配置方式进行,这是一种相对传统但仍然广泛使用的实践方法。我们将讨论相关的配置、实体管理以及事务处理等方面的知识。 首先,Spring 4提供了对多种持久化...

    Spring之Spring2.5集成Hibernate3.6

    这篇博客“Spring之Spring2.5集成Hibernate3.6”主要探讨了如何将两个经典的开源框架——Spring 2.5和Hibernate 3.6进行整合,以实现数据持久化的高效管理。 Spring 2.5版本是Spring框架的一个重要里程碑,它引入了...

    Struts2.3.28+spring4.1.6+hibernate4.3.8整合总结(注解)

    3. **Hibernate4.3.8**:Hibernate是流行的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库。在4.3.8版本中,注解如`@Entity`、`@Table`、`@Id`、`@GeneratedValue`等,用于定义实体类及其与数据库...

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

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 03”中,我们将深入探讨Java企业级开发中的三大核心框架——Spring、Spring MVC和Hibernate的整合应用,尤其是利用注解进行的无XML配置。以下是这些...

    Spring与Hibernate集成---声明式事务

    本文将深入探讨如何将Spring与Hibernate进行集成,并重点介绍声明式事务的配置与使用。 Spring框架是一个全面的企业级应用开发框架,它提供依赖注入(DI)和面向切面编程(AOP)等功能,简化了Java应用的复杂性。另...

    基于注解的spring3+hibernate3的springMVC框架

    综上所述,这个项目展示了如何利用Spring 3.x的注解配置,配合Hibernate 3.x进行持久化操作,并通过SpringMVC处理HTTP请求,构建一个高效、灵活的企业级应用。通过深入理解这些框架和注解的用法,开发者能够更有效地...

    spring4配置hibernate3

    总之,Spring 4与Hibernate 3的整合是Java EE开发中的重要实践,它将Spring的IoC和AOP特性与Hibernate的ORM能力结合在一起,形成了强大的数据访问层。通过理解并掌握这一技术,开发者能够更好地应对复杂的数据库操作...

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

    【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 09" 提供了一次深入了解Java企业级应用开发的机会,特别是在使用Spring MVC、Spring和Hibernate这三大核心框架进行全注解配置的场景下。...

    spring3 hibernate3 整合

    6. **JPA集成**:Spring3支持JPA,如果你更倾向于使用JPA规范,可以将Hibernate作为其提供商,通过EntityManager和EntityManagerFactory进行数据操作。 7. **AOP集成**:Spring的AOP可以用于事务管理,也可以为DAO...

    spring mvc spring4.x hibernate4.注解方式注入

    现在,我们将详细讨论这三个框架以及它们如何通过注解方式进行集成和注入。 首先,Spring MVC是Spring框架的一部分,它允许开发者创建模块化、松耦合的Web应用。Spring MVC通过注解如@Controller、@RequestMapping...

    [轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发

    【轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发】这个主题主要涉及的是Java EE领域中的三大框架——Struts2、Spring3和Hibernate的集成应用,这是构建现代Java后端系统的一种常见方式。这些框架...

    spring与hibernate以及ibatis集成的实例和具体配置图解

    在压缩包子文件的文件名称列表中,我们看到了“sping与Ibatis以及hibernate集成配置.doc”,这可能是一个详细的文档,包含了文字说明和可能的配置截图,帮助读者理解每个步骤。"TestSpringJDBC"可能是Spring对JDBC的...

Global site tag (gtag.js) - Google Analytics