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)之二级缓存的配置
具体操作如下,接着上一篇文章往下走。
第五步,我们实现注解功能,在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)之二级缓存的配置
相关文章推荐
- S2SH整合以及图片上传(1)之spring搭建
- S2SH整合以及图片上传(5)之struts2的搭建
- S2SH整合以及图片上传(6)之图片上传
- S2SH整合以及图片上传(11)之修改信息(2)
- S2SH整合以及图片上传(9)之删除图片
- S2SH整合以及图片上传(10)之修改信息(1)
- S2SH整合以及图片上传(7)之解决懒加载
- S2SH整合以及图片上传(12)之分页显示
- java S2SH项目框架Struts2.3+Spring3.1+Hibernate3.6框架搭建整合以及实例demo代码分享
- S2SH整合以及图片上传(8)之显示图片
- struts2 spring4 hibernate4(s2sh)整合开发--项目整体架构的搭建
- 上传后立即显示图片以及urldecode
- JavaWeb 文件上传和下载以及图片水印
- 初识Hibernate(一)之配置文件以及框架搭建
- 移动端上传图片iphone图片旋转以及服务端处理方法
- SSH框架搭建电商系统之图片上传与显示
- 云计算之路:博客后台图片上传切换至“又拍云”以及新版图片上传功能上线
- SSH框架搭建电商系统之图片上传与显示
- Mac 下Eclipse4.7.2 搭建hibernate环境 以及测试例子
- Hibernate基本环境搭建以及增删改和加载