您的位置:首页 > 其它

S2SH整合以及图片上传(3)之hibernate搭建(2)

2018-03-04 21:49 471 查看
    考虑到接口编程以及分层的问题,我们将面向数据与服务分开操作。
    具体操作如下,接着上一篇文章往下走。

    第五步,我们实现注解功能,在spring的配置文件applicationContext.xml中添加如下代码:
<!-- 此方法除了具有<context:annotation-config />的功能之外,
还具有自动将带有@component,@service,@Repository等注解的对象注册到spring容器中的功能。
这种方法 所产生的的处理那些注解的处理器工具,会处理所有绑定到容器上面的bean,不管是通过xml手动注册的还是通过scanning扫描注册的
当<context:annotation-config />和 <context:component-scan>同时存在的时候,前者会被忽略。-->
<context:component-scan base-package="com.ssh.dao.impl"/>    第六步,配置事务管理器,进行统一管理事务,依旧是在applicationContext.xml中配置,如下:<!-- 配置事务管理器,统一管理sessionFactory的事务 -->
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用事务注解 -->
<tx:annotation-driven transaction-manager="txManager"/>    第七步,我们对项目进行分层管理,新建如下包:
    


    第八步,按照分层结构来实现相关代码,如下:

    PersonDao接口的代码:
package com.ssh.dao;

import com.ssh.po.Person;

public interface PersonDao {

//添加
public void save(Person person);
}
    PersonDaoImpl对象的代码:package com.ssh.dao.impl;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;

import com.ssh.dao.PersonDao;
import com.ssh.po.Person;

@Transactional
public class PersonDaoImpl implements PersonDao {

// 用@Resource注解方式进行依赖注入
@Resource
private SessionFactory sessionFactory;

@Override
public void save(Person person) {
/**
* 以前我们通过sessionFactory对象得到session,是通过sessionFactory.openSession()得到的,
* 但在此,我们需要注意一点,因为Spring会自动地帮我们管理事务,就是说它会自动地帮我们管理session对象,
* 所以这时我们只须通过sessionFactory.getCurrentSession()从Spring容器里面得到当前
* 被Spring容器管理的session对象。
*/
// 建议使用persist()方法,和JTA规范保持一致,与save()作用一样
sessionFactory.getCurrentSession().persist(person);

}

}
    接下来是服务层。
    PersonService接口的代码:package com.ssh.service;

import com.ssh.po.Person;

public interface PersonService {

//添加
public void save(Person person);
}
    PersonServiceImpl对象的代码:package com.ssh.service.impl;

import com.ssh.dao.PersonDao;
import com.ssh.po.Person;
import com.ssh.service.PersonService;

public class PersonServiceImpl implements PersonService {

private PersonDao personDao;

public PersonDao getPersonDao() {
return personDao;
}

public void setPersonDao(PersonDao personDao) {
this.personDao = personDao;
}

@Override
public void save(Person person) {
personDao.save(person);
}

}
    第九步,我们需要在spring的配置文件applicationContext.xml中配置相关dao和service的bean:<!-- 配置dao层对象 -->
<bean id="personDaoImpl" class="com.ssh.dao.impl.PersonDaoImpl" />

<!-- 配置service层对象-->
<bean id="personServiceImpl" class="com.ssh.service.impl.PersonServiceImpl">
<property name="personDao" ref="personDaoImpl" />
</bean>    第十步,在TestSSH中进行测试,其代码如下:package com.ssh.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ssh.po.Person;
import com.ssh.service.PersonService;

public class TestSSH {

public static void main(String[] args) {

//获取applicationContext
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
// TestPojo testPojo = (TestPojo) ac.getBean("testPojo");
// System.out.println(testPojo.getName());

//得到PersonServiceImpl
PersonService personService = (PersonService) ac.getBean("personServiceImpl");

//此处测试hibernate
Person person = new Person("李斯", "upload/photo2");
personService.save(person);

}

}
    第十一步,如果测试成功,为如下结果:
        


    数据库中将存在如下数据:
    


S2SH整合以及图片上传(4)之二级缓存的配置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssh整合 图片上传