(crm笔记1-2) Dao层的搭建
程序员文章站
2022-05-08 14:33:53
...
Dao层的搭建
上一节里面提到的,现在还在搭建dao层的阶段
目录如下:
首先创建一个共有的Dao层,里面设置共有的方法的接口
package com.huiyu.crm.dao;
public interface ICommonDao<T> {
public void save(T entity);
}
然后创建实现类:
public class CommonDaoImpl<T> extends HibernateDaoSupport implements ICommonDao<T> {
@Override
public void save(T entity) {
this.getHibernateTemplate().save(entity);
}
}
里面继承spring里面的HibernateDaoSupport支持类
并通过该类实现接口的方法。
beans.xml的配置
首先我们对beans.xml进行一些基本的配置,配置的代码如下:
<!-- 配置注解的自动扫描 -->
<context:component-scan base-package="com.huiyu.crm"></context:component-scan>
<!-- 配置本地化代理工厂bean,这是spring整合hibernate的入口 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 事物管理器 aop切面 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置处理事务的注解 -->
<tx:annotation-driven transaction-manager="txManager"/>
主要是配置一些spring中特有的aop等一些,将事物代理工厂设置好。然后将beans.xml文件中的会话工厂和java文件中的会话工厂相对应,需要更改CommonDaoImpl.java的代码:
增加:
//通过注解的方式注入sessionfactory
@Resource(name="sessionFactory")
public void setSessionFactoryDI(SessionFactory sessionFactory){
System.out.println("sessionFactory+"+sessionFactory);
//调用父类,hibernateDaoSupport中的setSessionFactory方法,注入sessionFactory
super.setSessionFactory(sessionFactory);
}
然后就开始对Dao层代码进行完善。主要是完成右边的两个代码文件:ISysUserGroupDao和SysUserGroupDaoImpl
代码如下:
ISysUserGroupDao .java
public interface ISysUserGroupDao extends ICommonDao<SysUserGroup>{
public final static String SERVICE_NAME="com.huiyu.crm.dao.impl.SysUserGroupDaoImpl";
}
SysUserGroupDaoImpl .java
@Repository(ISysUserGroupDao.SERVICE_NAME)
public class SysUserGroupDaoImpl extends CommonDaoImpl<SysUserGroup> implements ISysUserGroupDao{
}
这样就实现了整个Dao层如最上图所示的架构。下面进行junit单元测试
测试类:
public class TestSysUserGroupDao {
@Test
public void testSave() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ISysUserGroupDao sysUserGroupDao = (ISysUserGroupDao) ctx
.getBean(ISysUserGroupDao.SERVICE_NAME);
//插入数据
SysUserGroup sysUserGroup = new SysUserGroup();
sysUserGroup.setId(2);
sysUserGroup.setIncumbent("销售部");
sysUserGroup.setName("李四");
sysUserGroup.setPrincipal("张三");
sysUserGroup.setRemark("no remark");
sysUserGroupDao.save(sysUserGroup);
}
}
这里运行junit单元会发现运行出现输入如下:
这里在数据库中会发现,其实没有数据真正的插入,需要更改一下hibernate配置文件。
<property name="hibernate.connection.autocommit">true</property>
这样就成功运行插入保存数据了。