`
willvvv
  • 浏览: 332595 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring 2.5.6和hibernate3.2.2集成(2)

阅读更多

上一篇文章写了如何使用spring的注解,这一篇记录一下和hibernate简单配合。

1.使用各种mysql客户端或直接命令行执行如下脚本:

create database if not exists `test`;

USE `test`;

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 2.既然是ORM当然需要Model了

package com.isa.demo2.domain;

import java.io.Serializable;

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

import org.apache.commons.lang.builder.ToStringBuilder;


@Entity
@Table(name = "user")
public class User implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -9029863029696113906L;
	private long id;
	private String name;
	
	@Id
	@Column(name = "ID", unique = true, nullable = false, scale = 0)
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	
	@Column(name = "NAME", unique = true, nullable = false)
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
	
}

 3.关于需不需要dao层的问题,看大家的习惯吧,作为一个demo,简单明了即可。这里使用了以前的一个项目的结构。

package com.isa.demo2.service;

import java.util.List;

import com.isa.demo2.domain.User;

public interface UserService {
	List<User> getAllUsers();
	User getUserById(long id);
}

 4.接口的实现类

package com.isa.demo2.service;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.isa.demo2.domain.User;

public class UserServiceImpl implements UserService {

	private SessionFactory sessionFactory;
		
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	
	@Override
	public List<User> getAllUsers() {
		Session session = sessionFactory.getCurrentSession();
		String hql = "from User";
		List<User> list = session.createQuery(hql).list();
		return list;
	}

	@Override
	public User getUserById(long id) {
		Session session = sessionFactory.getCurrentSession();
		User user = (User) session.get(User.class, id);
		return user;
	}

}

 5.配置文件applicationContext.xml

<?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:tx="http://www.springframework.org/schema/tx"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	   default-autowire="byName" default-lazy-init="true">
	
	<!-- 支持 @Transactional 标记 -->
	<tx:annotation-driven/>

	<!-- 支持 @AspectJ 标记-->
	<aop:aspectj-autoproxy/>
	
	<aop:config>
		<aop:pointcut id="serviceOperation" expression="execution(* com.isa.demo2.service.*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/>
	</aop:config>


	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true"/>
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>

	<bean id="userService" class="com.isa.demo2.service.UserServiceImpl"></bean>

</beans>

 第二个配置文件applicationContext-hibernate.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans default-autowire="byName" default-lazy-init="true">
	
	<!-- 数据源定义,使用dbcp 连接池 -->
	<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<!-- Connection Info -->
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost/test?useUnicode=true&amp;characterEncoding=utf-8" />
		<property name="username" value="root" />
		<property name="password" value="123456" />

		<!-- Connection Pooling Info -->
		<property name="initialSize" value="5" />
		<property name="maxActive" value="100" />
		<property name="maxIdle" value="30" />
		<property name="maxWait" value="1000" />
		<property name="poolPreparedStatements" value="false" />
		<property name="defaultAutoCommit" value="false" />
	</bean>

	<!--Hibernate SessionFatory-->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="annotatedClasses">
			<list>
				<value>com.isa.demo2.domain.User</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
				<prop key="hibernate.show_sql">false</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
				<prop key="hibernate.cache.use_query_cache">true</prop>
			</props>
		</property>
	</bean>

	<!--Hibernate TransactionManager-->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
</beans>

 6.简单测试类

package com.isa.demo2.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.isa.demo2.service.UserService;

public class Demo2Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "demo2/*.xml" });
		UserService service = (UserService)context.getBean("userService");
		System.out.println(service.getUserById(1L).toString());
	}
}

 7.说明:这个demo来源于我刚毕业的时候做的一个项目,这是第一次接触spring和hibernate,那个项目的架构看起来蛮怪异,C#+hessian+hibernate+spring+Oracle,呵呵,为什么是C#呢?而且还是客户端程序,看到hessian就知道了。一些技术真的不用就忘记了,在这一段没有使用hibernate和spring的时间更新和添加了很多特性,现在重新看一下也算是与时俱进。再唠叨一下,技术和语言是永无止境的,但是学习的技巧和经验是需要归纳总结才能进步的。

1
0
分享到:
评论

相关推荐

    spring 2.5.6和hibernate3.2.2集成(1)

    这篇博客"spring 2.5.6和hibernate3.2.2集成(1)"显然是关于如何将这两个版本的框架整合到一个项目中的教程。下面我们将深入探讨这两个框架及其集成的关键知识点。 1. Spring框架: - 版本2.5.6:这是一个较旧但...

    Struts2.1.8+Spring2.5.6+Hibernate3.3.2项目整合

    同时,Struts2和Spring之间的集成可以通过Struts2的Spring插件实现,使得Action可以直接从Spring容器中获取bean。 除了核心框架的整合,项目还涉及到MySQL数据库的使用,提供数据存储。"增,删,改,查,完整分页...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.2整合包

    Struts2.1.6、Spring2.5.6和Hibernate3.3.2是三个在Java Web开发中广泛使用的开源框架,它们的整合为开发者提供了强大的后端支撑。这个整合包是为了解决企业在构建基于Java的Web应用程序时面临的复杂性问题,通过将...

    Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)架包

    一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)  1. jar包引入  Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jar  Hibernate 3.6.8:hibernate3.jar...

    struts1.3.8+spring2.5.6+hibernate3.3框架集成

    Struts1.3.8、Spring2.5.6和Hibernate3.3是经典的Java Web开发框架组合,常被称为SSH框架。这个集成项目是基于这三个框架的整合,旨在提供一个可快速开发、易于维护的后端系统基础。下面将详细阐述这三个框架的主要...

    struts2+spring2.5.6+hibernate3.0+ext整合开发

    Struts2、Spring 2.5.6、Hibernate 3.0 和 Ext 是四个非常重要的Java Web开发框架,它们在企业级应用开发中扮演着关键角色。这些技术的整合使用可以构建出高效、灵活且可扩展的Web应用程序。 **Struts2** 是一个...

    spring2.5.6与hibernate3.3整合示例

    在IT领域,Spring和Hibernate是两个非常重要的框架,它们分别专注于依赖注入和对象关系映射。本示例展示了如何将Spring 2.5.6版本与Hibernate 3.3版本进行整合,以便在Java应用程序中实现高效的数据访问和事务管理。...

    Struts2.1.6-Spring2.5.6-Hibernate3.3.2

    Struts2.1.6、Spring2.5.6和Hibernate3.3.2是三个在Java Web开发中广泛使用的开源框架,它们分别是MVC框架、IoC/DI容器和对象关系映射(ORM)框架的代表。这些框架的组合在当时是非常流行的,用于构建高效、可扩展和...

    struts2.1.8.1+spring2.5.6+hibernate3.5.6整合注解

    2. 配置Struts2、Spring和Hibernate的主配置文件,启用注解扫描。 3. 在实体类、DAO接口、Service接口及其实现、Action类上添加注解。 4. 创建数据库连接配置,如DataSource。 5. 配置Spring的事务管理器。 6. 在...

    struts-2.3、spring2.5.6、hibernate3.3整合示例

    这个示例项目包含了上述整合的所有配置和源代码,可以直接导入开发环境运行,帮助开发者快速理解并掌握Struts 2、Spring和Hibernate的整合技术。通过学习和实践这个示例,开发者能够更好地运用这些框架构建复杂的...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    ### Struts2.1.6 + Spring2.5.6 + Hibernate3.3.1 整合 在本文中,我们将详细介绍如何将Struts2.1.6、Spring2.5.6以及Hibernate3.3.1进行整合,并构建一个简单的MVC应用。通过这个过程,读者将了解到这三种框架的...

    Struts2.1.6 +Spring2.5.6 + Hibernate3.3.2整合包

    将Struts2、Spring和Hibernate整合在一起,可以实现业务逻辑、数据访问和用户交互的无缝衔接。Struts2处理HTTP请求并调用Spring管理的Action,Spring则负责服务层的依赖注入和事务管理,而Hibernate则处理数据持久化...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解

    在深入探讨Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解的实现细节之前,我们先回顾一下这三个框架的基本概念及其在JavaEE企业级开发中的作用。 ### Struts2框架 Struts2是一个开源的Web应用框架,它遵循MVC...

    spring2.5.6+hibernate3.3.2+struts2.1.8

    标题 "spring2.5.6+hibernate3.3.2+struts2.1.8" 提供了一个经典的Java Web开发技术栈,这个组合被称为S2SH(Spring、Struts2和Hibernate)。这个版本的集成对于初学者来说是一个很好的起点,因为它包含了三个主要的...

    Tapestry5.1+Spring2.5.6+Hibernate3.2.5写得简单CURD的程序

    在这个简单的CURD程序中,开发者首先需要配置Tapestry、Spring和Hibernate,包括设置项目结构、导入必要的库和配置文件。接着,定义实体类并创建与之对应的数据库表,使用Hibernate的注解进行映射。然后,建立Spring...

    struts2.1.8+spring2.5.6+hibernate3.3.2整合项目开发

    - **测试与优化**:完成上述配置后,进行单元测试和集成测试,确保各部分功能正常。根据性能需求,可能需要对查询优化、缓存策略等进行调整。 在这个整合项目中,"login"可能是一个登录功能的Action或者相关页面。...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发 http://www.cnitblog.com/intrl/archive/2009/04/13/56322.aspx 这篇文章的源码由于他的上传的空间用户可能下载失败,作者相当牛而且具有奉献精神

    Struts2+Spring2.5.6+Hibernate3 用到的jar包

    Struts2+Spring2.5.6+Hibernate3 用到的jar包 antlr-2.7.6.jar asm.jar backport-util-concurrent.jar cglib-nodep-2.1_3.jar commons-collections-3.1.jar commons-dbcp.jar commons-fileupload-1.2.1.jar commons-...

    Jboss4.2.2+Spring2.5.6+hibernate+JTA事务的实现

    1. **配置JBoss**:首先,你需要将Spring和Hibernate的相关库添加到JBoss的类路径中,并且可能需要对JBoss的配置文件进行调整,以支持Spring和JTA。 2. **配置Spring**:创建Spring的配置文件,定义数据源、...

Global site tag (gtag.js) - Google Analytics