搭建Spring Mvc+Spring+Hibernate开发框架详细说明

最近闲来无事自己练习了一下搭建开发框架。找了很多资料,spring 3.0.1+hibernate3.2.5的jar包整合没有冲突。最终完成了测试。2大框架学的时间也不短了。推荐大家在学习的过程中多去看官网下载的压缩包中的内容。很多我们在百度上问的东西里面都有案例和相关的文档解释。看英文还能学点英语,最后祝大家学习顺利吧。

 

 

源码+jar包打包下载:

http://pan.baidu.com/share/link?shareid=217859&uk=1997312776

 

 

 

1、  首先先下载hibernate和spring的jar包。推荐在官网下载,本篇blog用的是hibernate3.2.5+spring3.0.1

2、  建立web project。POJO类和映射文件。

Pojo类没有什么困难,但是本篇仍旧贴出代码如下:

package cn.sprhib.model;

public class Users {
	
	private Long id;
	private String username;
	private String password;
	
	
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

建立映射文件Users.hbm.xml

说明:关于头文件的引用和其中的一些xml写法案例在hibernate包的hibernate-3.0\eg\org\hibernate\auction下可以找到相关的案例写法。Copy过去即可,本案例映射代码如下:

<?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">
<hibernate-mapping>

	<class name="cn.sprhib.model.Users" table="Users" catalog="Sprhib">
		<id name="id" type="long" column="id" length="3">
			<generator class="identity"/>
		</id>
		<property name="username" column="username" length="10" not-null="true" type="string"/>
		<property name="password" column="password" length="20" not-null="true" type="string"/>
	</class>
	
</hibernate-mapping>

3、导入hibernate3.2.5相关Jar包。为生成数据库表做准备。导入Jar包情况请看下图:

搭建Spring Mvc+Spring+Hibernate开发框架详细说明_第1张图片

除此之外还要导入Mysql的驱动包


4、编写hibernate.cxf.xml文件。

参考文件位置: hibernate-3.0.1\hibernate-3.0\etc下得hibernate.cxf.xml这个文件把大致轮廓都已经写好。其中的一些property的key还有value可以去同目录下的hibernate.properties文件中去查阅,当然也可以去该类的源码去中查找.代码如下:

<?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">
<hibernate-configuration>
	<session-factory>
		<!-- 是否显示sql执行 -->
		<property name="show_sql">true</property>
		<!-- 设置方言,即数据库的平台 -->
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<!-- 设置数据库驱动 -->
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<!-- 设置数据库url -->
		<property name="connection.url">
			jdbc:mysql://192.168.1.104:3306/sprhib?useUnicode=true&characterEncoding=utf8
		</property>
		<!-- 设置连接用户名 -->
		<property name="connection.username">root</property>
		<!-- 设置连接密码 -->
		<property name="connection.password">root</property>
		<!--Examda,是否使用数据库外连接-->
 		<property name="hibernate.use_out_join">True</property>		
		
		<!-- 设置映射的xml文件.注意格式为/ -->
		<mapping resource="cn/sprhib/model/Users.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>

5、编写类将POJO通过配置好的ORM关系映射生成表:代码如下

public class ClassToDB {
   
   
    public static void main(String[] args) {
       Configuration config = null;
       Session session = null;
       Transaction sa = null;
      
       config = new Configuration().configure(new File("src/hibernate.cfg.xml"));
       SessionFactory sessionFactory = config.buildSessionFactory();
       session = sessionFactory.openSession();
       sa = session.beginTransaction();
       SchemaExport schemaExport = new SchemaExport(config);
       schemaExport.create(true, true);
       sa.commit();
    }
}
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------

下面开始加入spring的配置,并且将hibernate数据库管理交由spring的bean管理

 

1、在WEB-INF文件夹下面建立xml文件名为sprhib-data.xml。

2、关于头文件的阐述:周所周知spring的头文件是引用的spring服务器上面的schema约束。Beans、context、aop等等都有明确的地址。[关于xml的schema约束部分的知识本章不再详述,不了解的可以去看我的blog上webservice里面关于xml的讲解]拿到头文件可以手敲。也可以去Doc里面拿

         (1)手敲方式[官网url][schema][引用部分案例比如beans、context]

         http://www.springframe.org/schema/beans

     (2)Doc方式Copy

    Spring官网下载目录中会有一个文件为

           spring-framework-3.0.1.RELEASE-A-with-docs.zip文件。此文件解压之后在

spring-framework-3.0.1.RELEASE-A\docs\spring-framework-reference\htmlsingle下面有一个帮助文件为spring-framework-reference.html

在此文件的3.2.1  Configurationmetadata 中有相关案例如下图:

搭建Spring Mvc+Spring+Hibernate开发框架详细说明_第2张图片

将此文件copy过来即可

 

 

3、  添加Spring和c3p0相关的Jar包。如下截图所示:

搭建Spring Mvc+Spring+Hibernate开发框架详细说明_第3张图片

搭建Spring Mvc+Spring+Hibernate开发框架详细说明_第4张图片


4、  编写配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">




<!-- 配置dataSource选用c3p0方式 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl"
			value="jdbc:mysql://localhost:3306/sprhib?useUnicode=true&characterEncoding=utf8" />
		<property name="user" value="root" />
		<property name="password" value="root" />
		<property name="minPoolSize" value="2" />
		<property name="maxPoolSize" value="50" />
		<property name="initialPoolSize" value="10" />
		<property name="maxIdleTime" value="60" />
		<property name="acquireIncrement" value="2" />
</bean>

<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="mappingResources">
		<list>
			<value>cn/sprhib/model/Users.hbm.xml</value>
		</list>
	</property>
	<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
			</props>
	</property>
</bean>

<!-- 配置hibernateTemplate -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
	<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!-- 声明式事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory" ref="sessionFactory" />
</bean>

</beans>

5、  添加web.xml读取配置加载该xml代码如下:

<context-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>
 			/WEB-INF/sprhib-data.xml
 		</param-value>
 </context-param>

6、  编写JunitTestCase来实现添加一个用户,代码如下:

 

public class SaveUsers {
	
	BeanFactory factory = null;
	@Test
	public void testSave(){
		factory = new FileSystemXmlApplicationContext("WebContent/WEB-INF/sprhib-data.xml");   
		HibernateTemplate hibernateTemplate = (HibernateTemplate) factory.getBean("hibernateTemplate");
		
		Users user = new Users();
		user.setUsername("zhanglei");
		user.setPassword("qweasd");
		
		hibernateTemplate.save(user);
	}
}

测试成功:



-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面加入spring mvc的配置,完成前后台请求

1、  WEB-INF下面new一个xml文件名为: dispatcher-servlet.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:context="http://www.springframework.org/schema/context"
	   xmlns:mvc="http://www.springframework.org/schema/mvc"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans	   
							http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
							http://www.springframework.org/schema/context
							http://www.springframework.org/schema/context/spring-context-3.0.xsd
							http://www.springframework.org/schema/mvc
							http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
							">


<!--配置一个viewResolver来处理返回的页面,配置前置和后置-->  
<bean id="viewresolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <property name="prefix">  
        <value>/WEB-INF/pages/</value>  
    </property>  
    <property name="suffix">  
    <value>.jsp</value>  
    </property>  
</bean>  


<!-- 扫描注解配置的包 -->
<context:component-scan base-package="cn.sprhib.*" />
<mvc:annotation-driven />

</beans>

2、 web.xml 加入前置控制器 Servlet 代码如下 :

<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
  
  <!-- 添加spring mvc servlet配置 -->
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/test/* </url-pattern>
	</servlet-mapping>

3、  编写ControllerDao等代码完成一个操作

@Controller
@RequestMapping("controller")
public class UsersController{

	@Resource
	private UsersDao usersDaoImpl;
	public UsersDao getUsersDaoImpl() {
		return usersDaoImpl;
	}
	public void setUsersDaoImpl(UsersDao usersDaoImpl) {
		this.usersDaoImpl = usersDaoImpl;
	}



	@RequestMapping(value="/addUser.action",method=RequestMethod.GET)
	public void addUsers(HttpServletRequest request,HttpServletResponse response){
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		Users u = new Users();
		u.setUsername(username);
		u.setPassword(password);
		usersDaoImpl.addUser(u);
		
	}
	
	
}

Dao接口

package cn.sprhib.model;

public interface UsersDao {
	public void addUser(Users user);
}

Dao实现类

@Component("usersDaoImpl")
public class UsersDaoImpl implements UsersDao{

	@Resource(name="hibernateTemplate")
	private HibernateTemplate hibernateTemplate;
	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	@Override
	public void addUser(Users user) {
		hibernateTemplate.save(user);
	}

}

访问地址以操作:

http://localhost:8080/Sprhib/test/controller/addUser.action?username="ceshi"&password="pass"

 

 

 

到此为止springmvc+spring+hibernate 搭建3层开发架构并且完成了一个增加的案例。


 


 

 


你可能感兴趣的:(搭建Spring Mvc+Spring+Hibernate开发框架详细说明)