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

搭建简单的EXT-GWT(GXT)的开发环境(三)gxt结合spring和hibernate进行数据操作

    博客分类:
  • GXT
阅读更多
随便写着玩玩.不要太认真哦^^

主要还涉及了一点JPA方面的知识,如果不知道JPA是什么的--!ZZZZZZZ

第一件事当然是把hibernate需要的jar包都添加到项目中.如果不太清楚的可以参考下面的截图给的jar



接下来是配置hibernate.要说明的是此处我是参考一个台湾朋友的做法.虽然有点麻烦...XD

在resources下添加一个包,然后把hibernate.properties和jdbc.properties放到这个目录下
hibernate.properties
hibernate.dialect=org.hibernate.dialect.MySQLDialect

hibernate.show_sql=false
hibernate.format_sql=false
hibernate.cache.use_query_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
hibernate.hbm2ddl.auto=update


jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/map?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
jdbc.username=root
jdbc.password=root

# Time to wait for an open connection before timing out
# (in milliseconds)
cpool.checkoutTimeout=5000

# Connection pool size
cpool.minPoolSize=10
cpool.maxPoolSize=25

# How long to keep unused connections around(in seconds)
# Note: MySQL times out idle connections after 8 hours(28,800 seconds)
# so ensure this value is below MySQL idle timeout
cpool.maxIdleTime=7200

# Acquiring new connections is slow, so eagerly retrieve extra connections
# when current pool size is reached
cpool.acquireIncrement=5

cpool.autoCommitOnClose=true

然后添加dataAccessContext-hibernate.xml到spring这个包下面,注意里面的packagesToScan属性,你需要把你的所以实体类所在包都显示的在这个里面写出来,如果多个包,就有多个value
<?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" >

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
	<property name="driverClass" value="${jdbc.driverClassName}" />	
	<property name="jdbcUrl" value="${jdbc.url}" />	
	<property name="user" value="${jdbc.username}" />	
	<property name="password" value="${jdbc.password}" />		
	<property name="initialPoolSize" value="${cpool.minPoolSize}"/>	
	<property name="minPoolSize" value="${cpool.minPoolSize}" />	
	<property name="maxPoolSize" value="${cpool.maxPoolSize}" />	
	<property name="acquireIncrement" value="${cpool.acquireIncrement}" /> 
   <property name="maxIdleTime" value="${cpool.maxIdleTime}"/>
   
	</bean>	

	<!--Hibernate SessionFatory-->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="packagesToScan">
			<list>
				<value>com.yx.map.client.bean</value>	
			</list>
		</property>	
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
				<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
				<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
				<prop key="hibernate.connection.provider_class">${hibernate.connection.provider_class}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
			</props>
		</property>
	</bean>
    
</beans>




接下来修改applicationContext.xml,在其中添加以下内容
<!-- 支持 @Transactional 标记 -->
	<tx:annotation-driven />

	<!-- 支持 @AspectJ 标记 -->
	<aop:aspectj-autoproxy />

	<!-- 属性文件读入 -->
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:config/jdbc.properties</value>
				<value>classpath*:config/hibernate.properties</value>
			</list>
		</property>
	</bean>
	<!-- <aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* 
		com.xxxx.server..*ServiceImpl.*(..))" advice-ref="txAdvice"/> 
		</aop:config> 基本事务定义,使用transactionManager作事务管理,默认get*方法的事务为readonly,其余方法按默认设置. 
		默认的设置请参考Spring文档事务一章. <tx:advice id="txAdvice"> <tx:attributes> <tx:method 
		name="get*" read-only="true"/> <tx:method name="find*" read-only="true"/> 
		<tx:method name="query*" read-only="true"/> <tx:method name="*"/> </tx:attributes> 
		</tx:advice> -->

	<!-- Transaction 設定 -->
	<bean id="txProxyTemplate" abstract="true"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="transactionManager" />
		<property name="proxyTargetClass" value="true" />
		<property name="transactionAttributes">
			<props>
				<prop key="save*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED,
					-Exception</prop>
				<prop key="update*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED,
					-Exception</prop>
				<prop key="remove*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED,
					-Exception</prop>
				<prop key="*">PROPAGATION_SUPPORTS,ISOLATION_READ_COMMITTED,readOnly
				</prop>
			</props>
		</property>
	</bean>

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

	<!-- Dao 設定 -->
	<bean id="abstractSpringHibernateDao"
		class="com.chinatenet.gxt.park.server.dao.AbstractSpringHibernateDao"
		abstract="true">
		<property name="transactionManager" ref="transactionManager" />
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>


然后添加Hibernate的baseManage和baseDao,由于代码比较大,这2个类放在附件里面
注意这个2个类是需要放在项目的server包下面的


到此,基本的hibernate配置就算完成了.接下来,我们测试一下效果怎么样吧.简单的做法是创建一个实体,然后创建这个实体的数据服务

首先创建一个实体类,我这里叫ParkData.请注意,在gwt中,如果需要传至client端的java类是都需要放到client这个包下面的..所以我这里建立的包叫com.yx.map.client.bean,接下来,你需要把这个类实现序列化,以便gwt使用.我这里用的IsSerializable接口,^^,google自己的序列化方式.然后就是一些JPA的注解了...不了解的可以自己查询JPA的相关资料
package com.yx.map.client.bean;

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

import com.google.gwt.user.client.rpc.IsSerializable;

@Entity
@Table(name="parkdata")
public class ParkData implements IsSerializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 7995434803827667106L;

	@Id
	@GeneratedValue
	private int id;
	@Column
	private String parkName;
	@Column
	private String address;
	@Column
	private String descs;
	@Column
	private String allNum;
	@Column
	private String lastNum;
	@Column
	private String tel;
	@Column
	private String updateTime;
	@Column
	private double lat;
	@Column
	private double lng;
	@Column
	private String icon;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getParkName() {
		return parkName;
	}
	public void setParkName(String parkName) {
		this.parkName = parkName;
	}
	public String getDescs() {
		return descs;
	}
	public void setDescs(String descs) {
		this.descs = descs;
	}
	public String getAllNum() {
		return allNum;
	}
	public void setAllNum(String allNum) {
		this.allNum = allNum;
	}
	public String getLastNum() {
		return lastNum;
	}
	public void setLastNum(String lastNum) {
		this.lastNum = lastNum;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(String updateTime) {
		this.updateTime = updateTime;
	}
	public double getLat() {
		return lat;
	}
	public void setLat(double lat) {
		this.lat = lat;
	}
	public double getLng() {
		return lng;
	}
	public void setLng(double lng) {
		this.lng = lng;
	}
	public String getIcon() {
		return icon;
	}
	public void setIcon(String icon) {
		this.icon = icon;
	}
	
	@Override
	public String toString() {
		return getParkName();
	}
	
}




接下来就是创建ParkData所对应的dao和manager.具体做法见代码.注意dao上面的org.springframework.stereotype.Repository注解.使用此注解后,spring会生成一个此类的bean,bean的名称就是类名,但是首字母是小写的.然后就是这个manager,你可以更具你的需求.把一些业务代码放到这个manager里面.我这里就不写了~

ParkDataDao
package com.yx.map.server.dao.mapdao;


import org.springframework.stereotype.Repository;

import com.yx.map.client.bean.ParkData;
import com.yx.map.server.dao.AbstractSpringHibernateDao;

@Repository
public class ParkDataDao<E> extends
		AbstractSpringHibernateDao<E> {

	@Override
	protected Class<ParkData> getClazz() {
		return ParkData.class;
	}

}


ParkDataManager
package com.yx.map.server.dao.mapdao;

import com.yx.map.client.bean.ParkData;
import com.yx.map.server.dao.BaseManager;


public class ParkDataManager extends BaseManager<ParkData> {

}




在创建对应实体所对应的dao和manager时,一定要注意范型的使用...

接下来,需要让spring来管理这个manager,所以打开applicationContext.xml,在里面添加以下代码
<!--Manager 設定 -->
	<bean id="parkDataManager" parent="txProxyTemplate" lazy-init="true">
		<property name="target">
			<bean class="com.yx.map.server.dao.mapdao.ParkDataManager"
				lazy-init="true">
				<property name="dao" ref="parkDataDao" />
			</bean>
		</property>
	</bean>



好了,准备工作都就绪了,这个时候就可以在RPC服务中调用这些dao层的代码了.
首先打开GreetingServiceImpl,再里面添加一个manager,然后生成此manager对应的set方法并给予@Autowired注释以便spring注入.
private ParkDataManager parkDataManager;
	
	@Autowired
	public void setParkDataManager(ParkDataManager parkDataManager) {
		this.parkDataManager = parkDataManager;
	}


然后在greetServer(String input)中修改return中的一些代码
ParkData data =  parkDataManager.findById(1);
		if(null==data)
			return "Hello, " + input + "!<br>你还没有添加数据进来呢<br>I am running " + serverInfo
			+ ".<br><br>It looks like you are using:<br>" + userAgent;
		else
			return "Hello, " + input + "!<br>欢迎光临"+data.toString()+"<br>I am running " + serverInfo
			+ ".<br><br>It looks like you are using:<br>" + userAgent;


对了,在此之前,你需要在数据库中先创建一个名字为map的数据库(这个名字根据你自己的配置文件中的数据库名字而定).表就不建了,JPA会给我们创建的.

并且运行一下吧,不出意外,在数据库中就会生成一张表出来,打开他,添加一些测试数据进去吧.然后在页面中输入文字,点击发送看看效果吧.





过会再发个ext-gwt(gxt)如何整合 google map 第三版.

http://www.nptpark.com
  • 大小: 20.6 KB
  • 大小: 39.2 KB
  • dao.zip (5.5 KB)
  • 下载次数: 70
2
0
分享到:
评论

相关推荐

    搭建简单的EXT-GWT(GXT)的开发环境(四)ext-gwt(gxt)结合google map第三版开发

    在本篇内容中,我们将探讨如何搭建一个简单的EXT-GWT(GXT)开发环境,并将其与Google Maps API第三版集成。 首先,搭建EXT-GWT开发环境涉及以下步骤: 1. **安装Java Development Kit (JDK)**:EXT-GWT是基于Java...

    EXT-GWT(GXT) 2.2.4 JAVA API DOC chm 版

    EXT-GWT,全称为Ext GWT,是Sencha公司推出的一款基于Java的开源富互联网应用程序(Rich Internet Application,RIA)开发框架。GXT是EXT-GWT的简称,它提供了丰富的用户界面组件,允许开发者用Java代码来构建复杂的...

    搭建简单的EXT-GWT(GXT)的开发环境

    本文将详细介绍如何搭建一个简单的EXT-GWT(GXT)开发环境。 首先,你需要安装Eclipse集成开发环境以及Google Plugin for Eclipse。Google Plugin for Eclipse包含了GWT的开发工具,使得在Eclipse中编写、测试和...

    EXT-GWT(GXT)2.2.3 API DOC.zip

    EXT-GWT,全称为Ext GWT,是Sencha公司开发的一个强大的Java库,用于构建富互联网应用程序(RIA)。GXT是EXT-GWT的扩展,它提供了更多组件、样式和功能,使得开发者能够创建出与桌面应用相媲美的用户体验。GXT 2.2.3...

    EXT-GWT(GXT) 2.2.5 JAVA API DOC chm 版

    EXT-GWT(GXT) 2.2.4 JAVA API DOC chm 版.完美的的搜索功能,支持全文检索。2011年11月制作。如果打不开,请选中它,点右键 看属性,选择解除锁定。别再抱怨打不开了。

    Ext-Gwt(GWT)开发实例(整合Spring +Hibernate)

    标题 "Ext-Gwt(GWT)开发实例(整合Spring +Hibernate)" 涉及到的是一个实际项目开发的教程,其中结合了三个重要的技术框架:Google Web Toolkit (GWT),Spring 和 Hibernate。这个实例旨在展示如何在Web应用开发中...

    EXT-GWT 2.2.0 API DOC (gxt) chm版

    EXT-GWT 2.2.0 API DOC (gxt) chm 版 。 2010年10月制作。完美的搜索功能。如果打不开,请选中它,点右键 看属性,选择解除锁定。别再抱怨打不开了。

    gxt-2.1.1-gwt2 最新的

    gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2

    ext-gwt分页 鉴于网上关于ext-gwt的技术文章很少代码页很少本着开源的精神本人特地写了一个分页的组件供大家学习欢迎下载

    综上所述,EXT-GWT的分页功能为开发者提供了高效的数据管理方案,使得在大量数据的Web应用中,用户能够流畅地浏览和操作数据。通过深入理解并实践EXT-GWT的分页组件,开发者可以构建出更加用户友好的数据展示界面。

    EXT-GWT 2.2.3 API DOC (gxt) chm 版

    EXT-GWT 2.2.3 API DOC (gxt) chm 版,完美的的搜索功能,支持全文检索。2011年3月制作。如果打不开,请选中它,点右键 看属性,选择解除锁定。别再抱怨打不开了。

    EXT-GWT 2.2.2 API DOC (gxt) chm 版

    EXT-GWT 2.2.2 API DOC (gxt) chm 版 。 2011年3月制作。完美的搜索功能。 如果打不开,请选中它,点右键 看属性,选择解除锁定。别再抱怨打不开了。

    更新的ext-gwt选课系统

    EXT-GWT(Ext GWT)是Sencha公司开发的一个强大的JavaScript库,它允许开发者使用Java语言来编写富互联网应用程序(Rich Internet Applications,RIA)。EXT-GWT提供了丰富的组件库,包括表格、面板、表单、菜单等,...

    ext gwt gxt初学教程

    GXT等第三方库的出现,正是为了弥补这一空缺,提供更加丰富的UI组件和高级功能,如数据绑定、图表绘制等,极大地提升了开发效率和用户体验。 #### 实践操作:从GWT到GXT - **下载并集成GXT SDK**:从Sencha官网...

    gwt+spring+hibernate

    标题 "gwt+spring+hibernate" 涉及的是一个使用Google Web Toolkit (GWT)、Spring框架和Hibernate ORM技术的集成示例。这是一个常见的Web应用开发组合,用于构建高效、可扩展且功能丰富的Java web应用程序。下面将...

    ext-gwt的下载非常好

    gxt的下载非常好,ext-gwt的下载非常好

    EXT-GWT 2.1.0 API Doc chm版(新版本已可用)

    EXT-GWT2.1.0 java api 文档 chm格式方便查找2010年7月制作 完美的搜索,支持全文检索功能。另新版本EXT-GWT2.2.0 java api 已可用请到http://download.csdn.net/source/2700814 下载

    GWT EXT 教程全集

    " Gwt-Ext学习笔记之基础篇.doc "、" Gwt-Ext学习笔记之中级篇.doc "、" Gwt-Ext学习笔记之进级篇.doc "这三份文档,按照从基础到进阶的顺序,系统地介绍了EXT-GWT的使用技巧和实践案例。基础篇可能涵盖EXT-GWT的...

    gxt-2.2.4 EXT GWT

    gxt-2.2.4 EXT GWT Note : Ext GWT 2.X requires GWT 1.7+ or GWT 2.0+ (any build ending in "-gwt2.zip").

Global site tag (gtag.js) - Google Analytics