博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sping整合hibernate之二:dao层开发
阅读量:5886 次
发布时间:2019-06-19

本文共 5869 字,大约阅读时间需要 19 分钟。

 在上一篇日志中将hibernate的会话工厂sessionFactory注入到了spring的容器中,但这样还不够,因为hibernate的增删改查是要使用事务机制的, 所以还要在spring中配置事务管理,将hibernate管理事物的权利交给spring,这样,在代码中就无需手动管理事务了。
1.首先在spring中配置一个hibernate的jdbc
//applicationContext.xml(spring配置文件) 当然,在此之前要将实体类映射文件配置在sessionFactory
<!-- 配置hibernateTemplate 相当于jdbc  -->  
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
    <property name="sessionFactory"   ref="sessionFactory"></property> 
<!-- 注入sessionFactory -->  </bean>
2.配置事务管理
<!-- spring事务管理 -->  
<bean name="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">     
  <property name="dataSource" ref="dataSource" />     
  <property name="sessionFactory" ref="sessionFactory" />  
</bean>  
  <!-- 为增删改查的方法声明事务,我这里把事务放到dao上的,应该放在service比较好 -->
 <aop:config>   
  <aop:pointcut id="txServices" expression="execution(* com.scitc.ssh.dao..*.*(..))"/>   
  <aop:advisor advice-ref="txAdvice" pointcut-ref="txServices"/>
 </aop:config>
 <tx:advice id="txAdvice" transaction-manager="transactionManager">   <tx:attributes>    <tx:method name="add*" propagation="REQUIRED"/>    <tx:method name="insert*" propagation="REQUIRED"/>    <tx:method name="update*" propagation="REQUIRED"/>    <tx:method name="delete*" propagation="REQUIRED"/>    <tx:method name="create*" propagation="REQUIRED"/>    <tx:method name="find*" propagation="REQUIRED"/>   </tx:attributes>  </tx:advice>
3.注入dao层的类  
<!-- 注入dao层需要用hibernateTemplate的类 -->   
<bean id="BaseDao" class="com.scitc.ssh.dao.BaseDao">    
<!-- 为此类注入一个属性,这样在类中就可以获取到这个对象 -->      
<!-- 功能:HibernateTemplate hibernateTemplate = new HibernateTemplate()  -->    
<property name="hibernateTemplate" ref="hibernateTemplate"></property>     
</bean>
4.将事务和数据源,sessionFactory,jdbc,dao层注入这些弄好了之后,就可以写dao层了
 

完整的sping配置文件applicationContext.xml

1 
2
11 12 13
19 20
21
22
23
24
25
26
27 28
29
30
31
32
33
/com/scitc/ssh/model/User.hbm.xml
34
35
36
37
38
org.hibernate.dialect.MySQL5Dialect
39
40
true
41
true
42
update
43
44
45
46 47
48
49
50
51 52
53
54
55
56
57 58
59
60 61
62
63
64
65
66 67
68
69
70
71
72 73
74
75
76
77
78
79
80
81
82
83 84
85
86
87
88
89
90 91

 

 
 
//数据访问层通用类basedao.java
1 package com.scitc.ssh.dao; 2  3  4 import java.util.List; 5  6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.context.ApplicationContext; 8 import org.springframework.context.support.ClassPathXmlApplicationContext; 9 import org.springframework.orm.hibernate4.HibernateTemplate;10 11 12 import com.scitc.ssh.model.User;13 14 //数据访问层通用类15 public class BaseDao {16     17     //@Autowired可以自动获取spring创建的对象18     @Autowired private HibernateTemplate hibernateTemplate; //这里的属性名一定要和配置中的属性名一致19     20     //返回hibernateTemplate方法 21     public HibernateTemplate getHibernateTemplate(){22         return this.hibernateTemplate; 23     }24 25     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {26         this.hibernateTemplate = hibernateTemplate;27     }28     29     //添加30     public boolean add(Object entity){31         this.hibernateTemplate.save(entity);   //hibernateTemplate.save(entity)保存32         return true;33     }34     35     //删除36     public boolean delete(Object entity){37         this.hibernateTemplate.delete(entity);38         return true;39     }40     41     //查询全部42     @SuppressWarnings("unchecked")43     public List findAll(String queryString){44         return (List) this.hibernateTemplate.find(queryString);45         46     }47     48     //修改49     public boolean update(Object entity){50         this.hibernateTemplate.update(entity);51         return true;52         53     }54     55 //    //按参数查询56 //    public List findAll(String queryString, Object[] args){57 //        List list = new ArrayList();58 //        this.hibernateTemplate.find(queryString);59 //        return list;60 //    }61     62     public static void main(String[] args) {63         User user = new User();64         user.setU_id(1);65         user.setU_name("社会你海哥");66         //启动spring67         ApplicationContext applicationContexts = new ClassPathXmlApplicationContext("applicationContext.xml");68         //获取Ioc容器中的对象69         BaseDao baseDao = applicationContexts.getBean("BaseDao", BaseDao.class);70 //        baseDao.add(user);71         baseDao.update(user);72 //        User user2 = (User) baseDao.findAll("from User").get(0);73 //        baseDao.delete(user);74 //        System.out.println(user2.getU_name());75         76     }77     78 }

 

 

转载于:https://www.cnblogs.com/liaohai/p/6419686.html

你可能感兴趣的文章
8.5 exit函数-进程控制
查看>>
安装SeleniumIDE(基于Ubuntu Desktop 12.04 LTS)
查看>>
效率和协作工具--OneNote
查看>>
在Ubuntu 14.04 64bit上安装numpy和matplotlib库
查看>>
JSK-61 二进制加法【大数】
查看>>
HDU1877 又一版 A+B
查看>>
@ 添加属性(属性注入)
查看>>
往sde中导入要素类报错000732
查看>>
sql基本运算
查看>>
cxf 整合 spring 时 java.lang.VerifyError异常
查看>>
javascript中工厂模式
查看>>
MFC GetDlgItemText 失败
查看>>
NSString NSMutableString
查看>>
个人练习集锦
查看>>
log4net 将日志写入数据库
查看>>
springboot之启动方式
查看>>
初次安装git配置用户名和邮箱及密钥
查看>>
微服务架构盛行的时代,你需要了解点 Spring Boot
查看>>
6.1(续)索引、索引组织表--Oracle模式对象
查看>>
工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...
查看>>