最近闲来无事自己练习了一下搭建开发框架。找了很多资料,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包情况请看下图:
除此之外还要导入Mysql的驱动包
![](https://img-my.csdn.net/uploads/201301/20/1358651187_9501.jpg)
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 中有相关案例如下图:
![](https://img-my.csdn.net/uploads/201301/20/1358651331_4909.jpg)
将此文件copy过来即可
3、 添加Spring和c3p0相关的Jar包。如下截图所示:
![](https://img-my.csdn.net/uploads/201301/20/1358651369_4353.jpg)
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);
}
}
测试成功:
![](https://img-my.csdn.net/uploads/201301/20/1358651532_3096.jpg)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面加入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、 编写Controller和Dao等代码完成一个操作
@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层开发架构并且完成了一个增加的案例。