1

之前把SSH看完了,现在从头开始进行项目实践。现在讲整个过程中的点滴记录下来,希望对后来者有参考。

2

SSH是一个轻量级的java开发框架,struts负责MVC开发模式中的controller角色,hibernate则是负责对象的持久化,也就是对DB的访问,spring则是利用其IOC反转控制来完成对bean对象的管理,包括对hibernate的管理。好吧,这些东西相信大家都不陌生。现在我们正式开始,整个开发步骤主要包括以下几点:

  • 新建web project项目
  • 增加spring与hibernate类库文件
  • 新建spring的配置文件:applicationContext.xml
  • 新建POJO及对应的hibernate映射文件
  • 编写DAO接口
  • 实现DAO各方法
  • 完善applicationContext.xml配置,整合spring与hibernate

3.新建project和添加spring和hibernate就不多说了,如果嫌麻烦的话,可以通过myEclipse导入也可以。

  值得注意的就是别忘记添加你所用数据库(我用的mysql)JDBC驱动,c3p0的类库,spring orm/oxm/jdbc的类库文件。

  由于hibernate不能自动创建数据库,只能创建表结构,所以在开始项目之前我们先需要创建一个测试用的数据库,字符请选用UTF-8.

  关于applicationContext.xml的配置,主要是先配置dataSource以及sessionFactory,通过spring来进行管理,然后注入需要的DAO类中。

  以下是参考配置。

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost/hrsystem"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
<property name="maxPoolSize" value="40"/>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>

</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true;
</value>
</property>
</bean>

  需要值得注意的是:

  • sessionFactory的实现类一定要写正确了,如果你用的是hibernate4以上的版本,那么记得改class属性。
  • mappingResources这里我们先留空,待后续完善bean配置文件再进行引入。
  • dialect注意写你的数据库对应的方言
  • hibernate.hbm2ddl.auto=update可以让hibernate自动生成表结构

4.编写POJO以及hibernate映射文件

  POJO的编写就根据大家的需求自己写了,可以创建一个简单对象,同时写几个属性,通过IDE自动生成setter和getter函数

  别忘记创建一个空的构建函数。

  比如看看我的。

public class Employee {
private int id;
private String name;
private String password;
private int age; public Employee(){}

  //隐藏各属性的get/set函数
  }

  然后根据POJO创建hibernate映射文件。

<hibernate-mapping package="com.souvenir.bean">
<class name="Employee" table="Employee">
<!-- 映射标识属性 -->
<id name="id" column="emp_id"
type="int">
<!-- 指定主键生成器策略 -->
<generator class="identity"/>
</id>
<!-- 映射普通属性 -->
<property name="name" type="string"/>
<property name="password" type="string"/>
<property name="age" type="int"/>
</class>
</hibernate-mapping>

5.更新spring的配置文件

  将上面创建的bean映射文件引入到applicationContext.xml

<list>
<value>com/souvenir/bean/Employee.hbm.xml</value>
</list>

6.创建DAO接口

  至于为什么要用接口,我就不多说了,大家可以自行百度。

  在接口中主要定义了需要使用的方法:

public interface EmployeeDAO {

    Employee get(int id);

    Integer save(Employee emp);

    void update(Employee emp);

    void delete(Employee emp);

    void delete(int id);

    List<Employee> findByName(String name);

    List<Employee> findAllEmp();

    int getEmpNums();

}

7.实现DAO接口

  DAO接口的实现主要是与hibernate打交道,完成对数据的持久化,或者常规的CRUD操作。

  hibernate提供一个很方便的持久层访问模板:HibernateTemplate,有个这个模板再加上sessionfactory,我们就可以很方面的对数据库进行OOP操作了。

  以下是实现代码:

  

public class EmployeeDaoImp implements EmployeeDAO {
private SessionFactory sessionFactory;
private HibernateTemplate ht=null; public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} private HibernateTemplate getHibernateTemplate()
{
if (ht == null)
{
ht = new HibernateTemplate(sessionFactory);
}
return ht;
} @Override
public Employee get(int id) {
// TODO Auto-generated method stub
return getHibernateTemplate().get(Employee.class, id);
} @Override
public Integer save(Employee emp) {
// TODO Auto-generated method stub
return (Integer) getHibernateTemplate().save(emp);
} @Override
public void update(Employee emp) {
getHibernateTemplate().update(emp); } @Override
public void delete(Employee emp) {
// TODO Auto-generated method stub
getHibernateTemplate().delete(emp); } @Override
public void delete(int id) {
// TODO Auto-generated method stub
getHibernateTemplate().delete(get(id));
} @Override
public List<Employee> findByName(String name) {
// TODO Auto-generated method stub
return getHibernateTemplate().find("from Employee e where e.name=?",name);
} @Override
public List<Employee> findAllEmp() {
// TODO Auto-generated method stub
return (List<Employee>) getHibernateTemplate().find("from Employee");
} @Override
public int getEmpNums() {
// TODO Auto-generated method stub
return (int)getHibernateTemplate().find("select count(*) from Employee").get(0);
}

  通过代码我们可以看出,通过HibernateTemplate,我们的数据操作会很简单,很多常规的操作都已经实现了。

  然后这里我们会发现一个问题,sessionfactory怎么来呢?

  这里就需要说回spring了,我们通过spring对EmployeeDaoImp 这个类注入sessionfactory实例。

  OK,看配置!

8.向DAO实现类注入sessionfactory

  回到之前的spring配置文件,我们需要增加一些关于employeedao的配置。

<bean id="EmployeeDao" class="com.souvenir.daoImp.EmployeeDaoImp">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

  这里新配置了一个EmployeeDao的bean对象,并且向其注入了sessionfactory。

9.测试

  好了,到这里我们第一阶段的工作基本上结束了,都是按照上面的几个步骤来完成。

  因为我们这里暂时没有引入struts,所以暂时不进行相关action配置。

  这里通过一个简单的main函数来测试我们的整个开发配置是正确:

  

public static void main(String[] args) {

        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDAO empDao=(EmployeeDAO) ctx.getBean("EmployeeDao");
for(int i=1;i<=10;i++){
System.out.println("oooo==="+i);
empDao.save(new Employee("souvenir"+i,i+1,"password"+i));
}
}

  通过加载applicationContext.xml配置,然后获取到dao对象,进行实体bean的操作。

  

  

  

  

  

SSH开发实践part1:Spring与Hibernate整合的更多相关文章

  1. SSH程序框架之Spring与HIbernate整合

    spring整合hibernate 有两种方式 1.注解方式 2.xml方式实现 Spring整合Hibernate有什么好处? 1.由IOC容器来管理Hibernate的SessionFactory ...

  2. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

    轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...

  3. 框架篇:Spring+SpringMVC+hibernate整合开发

    前言: 最近闲的蛋疼,搭个框架写成博客记录下来,拉通一下之前所学知识,顺带装一下逼. 话不多说,我们直接步入正题. 准备工作: 1/ IntelliJIDEA的安装配置:jdk/tomcat等..(本 ...

  4. spring和hibernate整合,事务管理

    一.spring和hibernate整合开发步骤 1 引入jar文件,用户libarary列表如下 //spring_core spring3..9core\commons-logging-1.2.j ...

  5. spring+springmvc+hibernate整合遇到的问题

    spring+springmvc+hibernate整合遇到的问题2016年10月20日 23:24:03 守望dfdfdf 阅读数:702 标签: ssh学习经历的异常exception异常框架更多 ...

  6. Spring与Hibernate整合,实现Hibernate事务管理

    1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar     ...

  7. Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题

    近期在知乎看到一句话,保持学习的有一种是你看到了很多其它的牛人,不甘心,真的不甘心. Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现: org.apache.jaspe ...

  8. Spring第九篇【Spring与Hibernate整合】

    前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...

  9. spring+springmvc+hibernate 整合

    三大框架反反复复搭了很多次,虽然每次都能搭起来,但是效率不高.最近重新搭了一次,理顺了思路,整理了需要注意的地方,分享出来. 工具:Eclipse(jdk 1.7) spring和hibernate版 ...

随机推荐

  1. python 实现求和、计数、最大最小值、平均值、中位数、标准偏差、百分比。

    import sys class Stats: def __init__(self, sequence): # sequence of numbers we will process # conver ...

  2. iOS学习之C语言函数指针

    通过函数名调用函数: int max = maxValue(4, 5); printf("max = %d\n", max);     函数类型:int (int, int) 1. ...

  3. Introduction to Haskell

    "I know why you're here. ...why you hardly sleep, why night after night, you sit by your comput ...

  4. typings的理解

    简介一些js库扩展了JavaScript的特性和语法,但是TypeScript编译器并不识别,通过typings.json配置可以辅助IDE,给出有智能的提示信息,以及重构的依据.因此需要在typin ...

  5. OC中数组类NSArray的详解,数组的遍历(二)

    数组类的便利 1.for循环(大家都会的...) 2.NSEmunerator 3.for in 首先重点说下 第二种NSEmunerator枚举器,系统声明是 @interface NSEnumer ...

  6. 宣讲ppt的技巧

    这是一个L运营商的项目,项目规模比较大,中兴的客户群体定位主要是电信运营商,运营商的项目做起来非常累,不是一般的小公司能玩的,一般项目要经过这几个过程,前期信息获得——技术交流引导——实验局测试——投 ...

  7. 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?

    这个问题曾经困扰我很久,在了解了MBR之后,我曾认为第一块分区之前为一个block.但是用fdisk查看是2048,一直不了解其中的缘由,今天查了一下资料,大概了解了,其中的细节留着慢慢去了解. 最直 ...

  8. android开发 实现同时显示png/jpg 等bitmap图片还可以显示gif图片,有效防止OOM

    本来使用第三方jar包 GifView.jar  发现使用的时候不能显示png图片,而且多次setgifimage的时候还会OOM: 现在使用了一个新的第三方,demo是别人的, 下载链接:http: ...

  9. Spring MVC 环境搭建(二)

    在Spring MVC 环境搭建(一)中我们知道 spring 的配置是通过 urlmapping 映射到控制器,然后通过实现Controller接口的handlerequest方法转向页面. 但这存 ...

  10. Rich Text Editor for MVC

    在网站开发中难免会用到富文本编辑器,本文将介绍一款富文本编辑器(在线HTML编辑器) Rich Text Editor ,简要说明一下其在MVC中的使用. 具体使用情况和下载地址请参考:http:// ...