Hibernate Axis2 Webservice

首先用Eclipse开发Hibernate,并确保能正常操作数据库

其次发布为WebService,步骤请参考Eclipse axis开发WebService

数据库设计:

movie_info



news_info



picture_info



其中news_id是外键



WebService工程目录(java project),包括引用的jar




源码

<span style="font-size:14px;">package com.hv2.dbutils;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
import org.hibernate.cfg.Configuration;

import com.hv2.entity.MovieInfo;
import com.hv2.entity.NewsInfo;
import com.hv2.entity.PictureInfo;

public class LinkMySQLUtils {

	public Session createHibernateSession(){
		Session session = null;
		try{
			Configuration configuration = new Configuration().configure("/hiv2.cfg.xml");//这个一定要写上!!!
			StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
	        StandardServiceRegistryImpl registry = (StandardServiceRegistryImpl) builder.build();
	        SessionFactory factory = configuration.buildSessionFactory(registry);
			session = factory.openSession();
			session.beginTransaction();
			System.out.println("连接数据库成功");
		}catch(Exception e){
			System.err.println("连接数据库失败");
		}
		return session;
	}
	/*
	 * @doc 将session缓存清除,并关闭session,断开数据库连接
	 * @param session是Session的对象实例
	 * */
	public void flushAndClose(Session session){
		if(session == null){
			System.out.println("数据库关闭错误");
			return;
		}
		try{
			session.getTransaction().commit();
			session.flush();
			session.close();
			System.out.println("成功断开数据库连接");
		}catch(Exception e){
			System.err.println("数据库关闭错误");
			System.err.println(e.getMessage());
		}
	}
	
	/*
	 * @doc 根据数据表中的id查询相关信息
	 * @param className 数据表对应的实体类名字
	 * @return 返回查询结果集,如果没有查找到,则返回null
	 * */
	public List getTableInfo(Session session, String className){
		List result = null;
		result = (List) session.createQuery("from " + className).list();//查询的是实体类的名字
		return result;
	}
	/*public static void main(String[] argvs){
		LinkMySQLUtils mysql = new LinkMySQLUtils();
		Session session = mysql.createHibernateSession();
		List<MovieInfo> movielist = mysql.getTableInfo(session, "MovieInfo");
		System.out.println(movielist.get(0).getMovieName()+":"+movielist.get(0).getUpdatetime());
		List<NewsInfo> Newslist = mysql.getTableInfo(session, "NewsInfo");
		System.out.println(Newslist.get(0).getNewsTitle()+":"+Newslist.get(0).getUpdatetime());
		List<PictureInfo> Picturelist = mysql.getTableInfo(session, "PictureInfo");
		System.out.println(Picturelist.get(0).getPicName()+":"+Picturelist.get(0).getPicPath()+":"+Picturelist.get(0).getNewsInfo().getNewsId());
		mysql.flushAndClose(session);
	}*/
	
}
package com.hv2.dbutils;

import java.sql.Timestamp;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.hv2.entity.MovieInfo;


public class MovieResource extends UpdateResourceCtrl {

	private LinkMySQLUtils mysql = new LinkMySQLUtils();
	@Override
	public List getAllResource() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List getUpdateResource(String lastUpdateTime) {
		// TODO Auto-generated method stub
		
		List<MovieInfo> movieList = null;
		String hql = "from MovieInfo where updatetime != null and updatetime >=:time";
		Timestamp time = Timestamp.valueOf(lastUpdateTime);
		System.out.println(time);
		Session session = mysql.createHibernateSession();
		Query query = session.createQuery(hql);
		query.setTimestamp("time", time);
		movieList = query.list();//查询的是实体类的名字
		mysql.flushAndClose(session);
		return movieList;
	}

	@Override
	public List getOutdateResource() {
		// TODO Auto-generated method stub
		return null;
	}

}

package com.hv2.dbutils;

import java.sql.Timestamp;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.hv2.entity.MovieInfo;
import com.hv2.entity.NewsInfo;
import com.hv2.entity.PictureInfo;

/*
 * @doc 专门处理新闻信息的类
 * */
public class NewsResource extends UpdateResourceCtrl {

	private LinkMySQLUtils mysql = new LinkMySQLUtils();
	
	@Override
	public List<NewsInfo> getAllResource() {
		// TODO Auto-generated method stub
		String hql = "from NewsInfo";//hibernate格式的sql语句
		Session session = mysql.createHibernateSession();
		List<NewsInfo> newsList = null;
		newsList = session.createQuery(hql).list();//查询的是实体类的名字
		//以上能够得到news的主体信息,在PictureResource类中能得到一个news中包含的picture信息
		mysql.flushAndClose(session);
		return newsList;
	}

	/*
	 * @param 传入上次更新的时间,在表中查找上次更新后,插入表中的资源
	 * */
	@Override
	public List getUpdateResource(String lastUpdateTime) {
		// TODO Auto-generated method stub
		List<NewsInfo> newsList = null;
		String hql = "from NewsInfo where updatetime != null and updatetime >=:time";
		Timestamp time = Timestamp.valueOf(lastUpdateTime);
		System.out.println(time);
		Session session = mysql.createHibernateSession();
		Query query = session.createQuery(hql);
		query.setTimestamp("time", time);
		newsList = query.list();//查询的是实体类的名字
		mysql.flushAndClose(session);
		return newsList;
	}

	@Override
	public List getOutdateResource() {
		// TODO Auto-generated method stub
		return null;
	}

	/*public static void main(String[] argvs){
		NewsResource nr = new NewsResource();
		List<NewsInfo> list = nr.getUpdateResource("2000-01-01 00:00:00");
		for(int i=0; i<list.size(); i++)
			System.out.println(list.get(i).getNewsTitle());
		
	}*/
	
}

package com.hv2.dbutils;

import com.hv2.entity.MovieInfo;
import com.hv2.entity.NewsInfo;
import com.hv2.entity.PictureInfo;

/*
 * @doc 该类是各种资源的集合,用于返回给用户
 * */
public class ResourceList {

	private MovieInfo movies[];
	private NewsInfo news[];
	private PictureInfo pics[];
	
	public MovieInfo[] getMovies() {
		return movies;
	}
	public void setMovies(MovieInfo[] movies) {
		this.movies = movies;
	}
	public NewsInfo[] getNews() {
		return news;
	}
	public void setNews(NewsInfo[] news) {
		this.news = news;
	}
	public PictureInfo[] getPics() {
		return pics;
	}
	public void setPics(PictureInfo[] pics) {
		this.pics = pics;
	}

}

package com.hv2.dbutils;

import java.util.List;

import com.hv2.entity.MovieInfo;
import com.hv2.entity.NewsInfo;

public class ResourceListHandler {

	private ResourceList rl = new ResourceList();
	
	/*
	 * @param type代表资源类型,news:新闻,movie:电影,picture:新闻的图片,all:全部的资源
	 * @param time是上次更新的时间
	 * */
	public void setResourceList(String type, String time){
		if(type.equals("movie")){
			setMovieList(time);
		}
		if(type.equals("news")){
			setNewsList(time);
		}
		if(type.equals("all")){
			setMovieList(time);
			setNewsList(time);
		}
	}
	
	private void setMovieList(String time){
		MovieResource mr = new MovieResource();
		List<MovieInfo> list = mr.getUpdateResource(time);
		if(list == null)
			return ;
		int size = list.size();
		MovieInfo[] movies = new  MovieInfo[size];
		for(int i=0; i<size; i++){
			movies[i] = list.get(i);
		}
		rl.setMovies(movies);
	}
	
	private void setNewsList(String time){
		NewsResource nr = new NewsResource();
		List<NewsInfo> list = nr.getUpdateResource(time);
		if(list == null)
			return;
		int size = list.size();
		NewsInfo[] news = new  NewsInfo[size];
		for(int i=0; i<size; i++){
			news[i] = list.get(i);
		}
		rl.setNews(news);
	}
	
	public ResourceList getResourceList(){
		return this.rl;
	}
}

package com.hv2.dbutils;

import java.util.List;

/*
 *@doc 负责处理数据库事务的基类,是新闻/电影等资源的父类
 * 		所有与数据库交互的工作,都在此类中进行
 **/
public abstract class UpdateResourceCtrl {
	
	
	/*
	 * @doc 获取新闻/电影的所有信息
	 * */
	public abstract List getAllResource();
	/*
	 * @doc 获取需要更新的新闻/电影信息
	 * */
	public abstract List getUpdateResource(String lastUpdateTime);
	/*
	 * @doc 获取已经过时的新闻/电影信息
	 * */
	public abstract List getOutdateResource();
}

package com.hv2.entity;
// default package
// Generated 2014-7-25 20:25:20 by Hibernate Tools 3.4.0.CR1

import java.util.Date;

/**
 * MovieInfo generated by hbm2java
 */
public class MovieInfo implements java.io.Serializable {

	private String movieId;
	private String movieName;
	private String moviePath;
	private Date updatetime;

	public MovieInfo() {
	}

	public MovieInfo(String movieId, String movieName, String moviePath,
			Date updatetime) {
		this.movieId = movieId;
		this.movieName = movieName;
		this.moviePath = moviePath;
		this.updatetime = updatetime;
	}

	public String getMovieId() {
		return this.movieId;
	}

	public void setMovieId(String movieId) {
		this.movieId = movieId;
	}

	public String getMovieName() {
		return this.movieName;
	}

	public void setMovieName(String movieName) {
		this.movieName = movieName;
	}

	public String getMoviePath() {
		return this.moviePath;
	}

	public void setMoviePath(String moviePath) {
		this.moviePath = moviePath;
	}

	public Date getUpdatetime() {
		return this.updatetime;
	}

	public void setUpdatetime(Date updatetime) {
		this.updatetime = updatetime;
	}

}

package com.hv2.entity;
// default package
// Generated 2014-7-25 20:25:20 by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 * NewsInfo generated by hbm2java
 */
public class NewsInfo implements java.io.Serializable {

	private String newsId;
	private String newsTitle;
	private Date updatetime;
	//private Set<PictureInfo> pictureInfos = new HashSet<PictureInfo>(0);//该句一定注释掉,axis2不支持HashSet!!!!!!!!!!!!!!!!!!!!!!!!!!!

	public NewsInfo() {
	}

	public NewsInfo(String newsId, String newsTitle, Date updatetime) {
		this.newsId = newsId;
		this.newsTitle = newsTitle;
		this.updatetime = updatetime;
	}

	/*public NewsInfo(String newsId, String newsTitle, Date updatetime,
			Set<PictureInfo> pictureInfos) {
		this.newsId = newsId;
		this.newsTitle = newsTitle;
		this.updatetime = updatetime;
		this.pictureInfos = pictureInfos;
	}*/

	public String getNewsId() {
		return this.newsId;
	}

	public void setNewsId(String newsId) {
		this.newsId = newsId;
	}

	public String getNewsTitle() {
		return this.newsTitle;
	}

	public void setNewsTitle(String newsTitle) {
		this.newsTitle = newsTitle;
	}

	public Date getUpdatetime() {
		return this.updatetime;
	}

	public void setUpdatetime(Date updatetime) {
		this.updatetime = updatetime;
	}

	/*public Set<PictureInfo> getPictureInfos() {
		return this.pictureInfos;
	}

	public void setPictureInfos(Set<PictureInfo> pictureInfos) {
		this.pictureInfos = pictureInfos;
	}*/

}

package com.hv2.entity;
// default package
// Generated 2014-7-25 20:25:20 by Hibernate Tools 3.4.0.CR1

/**
 * PictureInfo generated by hbm2java
 * @author yzz
 * @doc 该类(表)是NewsInfo的从属表
 */
public class PictureInfo implements java.io.Serializable {

	private String picId;
	private NewsInfo newsInfo;
	private String picName;
	private String picPath;

	public PictureInfo() {
	}

	public PictureInfo(String picId, NewsInfo newsInfo, String picName,
			String picPath) {
		this.picId = picId;
		this.newsInfo = newsInfo;
		this.picName = picName;
		this.picPath = picPath;
	}

	public String getPicId() {
		return this.picId;
	}

	public void setPicId(String picId) {
		this.picId = picId;
	}

	public NewsInfo getNewsInfo() {
		return this.newsInfo;
	}

	public void setNewsInfo(NewsInfo newsInfo) {
		this.newsInfo = newsInfo;
	}

	public String getPicName() {
		return this.picName;
	}

	public void setPicName(String picName) {
		this.picName = picName;
	}

	public String getPicPath() {
		return this.picPath;
	}

	public void setPicPath(String picPath) {
		this.picPath = picPath;
	}

}


package com.hv2.service;

import java.util.List;
import com.hv2.dbutils.ResourceList;
import com.hv2.dbutils.ResourceListHandler;



public class ServiceImpl {
	
	
	/*
	 * @param type代表资源类型,news:新闻,movie:电影,picture:新闻的图片,all:全部的资源
	 * @param time是上次更新的时间
	 * */
	public ResourceList getUpdateResource(String type, String time){
		ResourceList rl = null;
		ResourceListHandler rlh = new ResourceListHandler();
		rlh.setResourceList(type, time);
		rl = rlh.getResourceList();
		return rl;
	}
	
	public String getTest(String test){
		return "test:" + test;
	}
/*	public static void main(String[] argvs){
		ServiceImpl si = new ServiceImpl();
		ResourceList movies = si.getUpdateResource("all", "2014-07-25 00:00:00");
		if((movies.getMovies() != null))
			System.out.println(movies.getMovies().length);
		if((movies.getNews() != null))
			System.out.println(movies.getNews().length);
	}*/
}



MovieInfo.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2014-7-25 20:26:00 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.hv2.entity.MovieInfo" table="MOVIE_INFO">
        <id name="movieId" type="java.lang.String">
            <column name="MOVIE_ID" />
            <generator class="assigned" />
        </id>
        <property name="movieName" type="java.lang.String">
            <column name="MOVIE_NAME" />
        </property>
        <property name="moviePath" type="java.lang.String">
            <column name="MOVIE_PATH" />
        </property>
        <property name="updatetime" type="java.util.Date">
            <column name="UPDATETIME" />
        </property>
    </class>
</hibernate-mapping>


NewsInfo.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2014-7-25 20:26:00 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.hv2.entity.NewsInfo" table="NEWS_INFO">
        <id name="newsId" type="java.lang.String">
            <column name="NEWS_ID" />
            <generator class="assigned" />
        </id>
        <property name="newsTitle" type="java.lang.String">
            <column name="NEWS_TITLE" />
        </property>
        <property name="updatetime" type="java.util.Date">
            <column name="UPDATETIME" />
        </property>
        <!-- 
        <set name="pictureInfos" table="PICTURE_INFO" inverse="false" lazy="false">
            <key>
                <column name="NEWS_ID" />
            </key>
            <one-to-many class="com.hv2.entity.PictureInfo" />
        </set>
         -->
    </class>
</hibernate-mapping>

PictureInfo.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2014-7-25 20:26:00 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.hv2.entity.PictureInfo" table="PICTURE_INFO">
        <id name="picId" type="java.lang.String">
            <column name="PIC_ID" />
            <generator class="assigned" />
        </id>
        <many-to-one name="newsInfo" class="com.hv2.entity.NewsInfo" fetch="join" lazy="false">
            <column name="NEWS_ID" />
        </many-to-one>
        <property name="picName" type="java.lang.String">
            <column name="PIC_NAME" />
        </property>
        <property name="picPath" type="java.lang.String">
            <column name="PIC_PATH" />
        </property>
    </class>
</hibernate-mapping>
客户端目录





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值