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. iOS学习之Object-C语言字符串和数值

    一.使用苹果帮助文档      1.帮助文档的作用:帮助开发者快速了解系统类的功能.           1)苹果每次iOS版本的升级,都会添加或者更新大量的API,并提供相应的参考文档.       ...

  2. ASP.NET&AJAX&JSON - 动态读取数据

    因为之前帮WM组做了一个delivery的dashboard,大概用了3周的时间,.net也忘了差不多了,ajax和highchart表也是现学的,蛮费劲!总算也搞出来了.发帖纪录一下. 1. 前台A ...

  3. ASP.NET中Global.asax 文件是什么?

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  4. 程序开发心理学阅读笔记——第I篇

    1.软件的任务是为了解决某一特定的问题,而软件开发者的任务却需要解决一系列问题.2.温伯格说,我们不能要求每个人都聪明异常,能够解决所有难题:但是我们必须持续思考,因为只有如此,我们才能明白自己在做什 ...

  5. text-overflow 与 word-wrap:设置使用一个省略标记...标示对象内文本的溢出。

    text-overflow 与 word-wrap text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 语法: 但是text-overflow只是用来说明文字溢出时 ...

  6. js节点解析

    在JS中,每一个节点都有一个nodeType 属性,用于表明节点的类型.节点类型由在Node 类型中定义的下列12个数值常量来表示,任何节点类型必居其一: Node.ELEMENT_NODE(1); ...

  7. 15、android 用toast实现简单的进度显示

    if(mtoast!=null) { mtoast.setText(progress); } else { mtoast=Toast.makeText(getApplicationContext(), ...

  8. Ngrok 内网穿透神器(转载)

    mac上配置web服务: http://note.rpsh.net/posts/2013/11/27/osx-10-9-apache-server-php-mysql/ Ngrok 内网穿透神器 由于 ...

  9. 6、android开发中遇到的bug整理

    1.使用actionProvider时出现的问题 bug复现: 解决方案: //import android.support.v4.view.ActionProvider; import androi ...

  10. sudo su 提示没有配置JDK environment

    sudo su 提示没有配置JDK environment 最近工作遇到一问题,我通过SecureCRT远程登录服务器,部署web应用.将变更文件替换后,我需要切换到root用户,重启Tomcat.所 ...