网上有很多这样的文章,但感觉比较零乱,现在进行一个整理!
第一次原创如果有什么问题希望指出!
创建一个Webservices项目!
创建数据库!演示我使用Mysql5.0
创建一个user表
在MyEclipse配置数据库
现在切换回来
添加Hibernate
我们使用Spring不需要创建sessionFactory类哈
添加Spring
个人认为使用Hibernate.xml作为sessionFactory比较好管理
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 服务器启动后读取 applicationContext.xml-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<!-- Spring framework -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 使用XFireSpringServlet 作为Servlet -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.spring.XFireSpringServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<!-- 过滤services -->
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
现在基本信息已经配置完成!
创建POJO````通过Hibernate反转
User.java
package com.xiaomaha.po;
import java.util.Date;
/**
* User generated by MyEclipse Persistence Tools
*/
public class User implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private String password;
private Date date;
// Constructors
/** default constructor */
public User() {
}
/** full constructor */
public User(String name, String password, Date date) {
this.name = name;
this.password = password;
this.date = date;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getDate() {
return this.date;
}
public void setDate(Date date) {
this.date = date;
}
}
User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.xiaomaha.po.User" table="user" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
<property name="password" type="java.lang.String">
<column name="password" />
</property>
<property name="date" type="java.util.Date">
<column name="date" length="0" />
</property>
</class>
</hibernate-mapping>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">mysql</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<mapping resource="com/xiaomaha/po/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
创建一个UserDAO.java 继承HibernateDaoSupport
package com.xiaomaha.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.xiaomaha.po.*;
public class UserDAO extends HibernateDaoSupport{
public void insertUser(User user){
getHibernateTemplate().save(user);
}
}
创建bo
package com.xiaomaha.bo;
import com.xiaomaha.dao.UserDAO;
import com.xiaomaha.po.User;
public class TestBO {
private UserDAO dao;
public UserDAO getDao() {
return dao;
}
public void setDao(UserDAO dao) {
this.dao = dao;
}
/*这个用于等会配置事物使用的!*/
public void executeInsert(User user){
dao.insertUser(user);
}
}
创建让Webservices调用的接口和实现类
Itest接口
package com.xiaomaha.xfire;
public interface Itest {
public void add(String str);
}
test实现Itest接口
package com.xiaomaha.xfire;
import com.xiaomaha.bo.TestBO;
import com.xiaomaha.po.User;
public class test implements Itest {
private TestBO bo;
public TestBO getBo() {
return bo;
}
public void setBo(TestBO bo) {
this.bo = bo;
}
public void add(String str) {
User user = new User();
/*str为了简便易懂我就当name使用*/
user.setName(str);
bo.executeInsert(user);
}
}
现在就开始配置applicationContext.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- Xfire配置信息 -->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
<bean name="Xfire" class="org.codehaus.xfire.spring.ServiceBean">
<!-- serviceBean 一看就知道不做解释 -->
<property name="serviceBean" ref="test" />
<!-- 外部调用接口!!!!! -->
<property name="serviceClass"
value="com.xiaomaha.xfire.Itest" />
</bean>
<!-- Xfire接口实现类 与bo有注入关系使用带事物的bo对象-->
<bean id="test" class="com.xiaomaha.xfire.test">
<property name="bo" ref="boProxy"></property>
</bean>
<!-- UserDAO继承了HibernateDaoSupport -->
<bean id="dao" class="com.xiaomaha.dao.UserDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- TestBO中有UserDAO的注如关系 -->
<bean id="bo" class="com.xiaomaha.bo.TestBO">
<property name="dao" ref="dao"></property>
</bean>
<!-- 配置事物管理 -->
<bean id="tm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 事物代理对象 ,target 指定需要代理 哪个对象 -->
<!-- <prop key="execute*">PROPAGATION_REQUIRED</prop>
execute开头的都具备事物能力
-->
<bean id="boProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="tm"></property>
<property name="target" ref="bo"></property>
<property name="transactionAttributes">
<props>
<prop key="execute*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
好了一切结束现在开始测试````
先启动服务器哈 我使用的是tomcat
我使用MyEclipse自带工具测试
进入后 填写URL地址
http://localhost:8080/WebServiceProject/services/Itest?wsdl
点GO
如果进入以下画面那么恭喜配置部署成功!!!!! 点下 add(接口暴露出来的方法```)
输入点东西把`````然后GO 在去看看你的数据库!!!!数据已经存入进去咯```
查看 Mysql连接数量(先要配置环境变量)
运行 cmd 进入DOS mysqladmin -uroot -proot status
一切正常!!!!!!!!!!!!!!