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

    考虑到接口编程以及分层的问题,我们将面向数据与服务分开操作。

    具体操作如下,接着上一篇文章往下走。

    第五步,我们实现注解功能,在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)之二级缓存的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值