博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring学习整合hibernate(四)
阅读量:5153 次
发布时间:2019-06-13

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

用到的Jar包

antlr-2.7.7.jar

c3p0-0.9.1.2.jar
com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.4.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.1.Final.jar
mysql-connector-java-5.1.7-bin.jar
spring-aop-4.0.0.RELEASE.jar
spring-aspects-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-jdbc-4.0.0.RELEASE.jar
spring-orm-4.0.0.RELEASE.jar
spring-tx-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar

 

Spring整合hibernate思路

  先配置hibernate文件,之后配置Spring文件

hibernate配置文件

1 
2 5
6
7 8
9
10
11
12
org.hibernate.dialect.MySQL5InnoDBDialect
13 14
true
15
true
16
17
update
18 19
20 21
22

 

spring配置文件

1 
2
11 12
13
14
15
16 17
18
19
20
21
22
23 24
25
26
27 28
29
30
31
32
33
34
35
36
37 38
39
40
41
42
43 44
45
46
47
48
49
50
51
52 53
54
55
57
58
59 60

 

dao层实现类

1 package com.spring.hibernate.daoImpl; 2  3 import org.hibernate.Query; 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.stereotype.Repository; 8  9 import com.spring.hibernate.dao.BookShopDao;10 import com.spring.hibernate.exception.BookStockException;11 import com.spring.hibernate.exception.UserAccountException;12 13 @Repository14 public class BookShopDaoImpl implements BookShopDao {15 16     @Autowired17     private SessionFactory sessionFactory;18     19 //    获取和当前线程绑定的线程20     private Session getSession(){21         return sessionFactory.getCurrentSession();22     }23     24     @Override25     public int findBookPriceByIsbn(String isbn) {26         String hql = "select b.price from Book b where b.isbn = ?";27         Query query = getSession().createQuery(hql).setString(0, isbn);28         return (Integer) query.uniqueResult();29     }30 31     @Override32     public void updateBookStock(String isbn) {33         String hql2 = "select b.stock from Book b where b.isbn =?";34         Integer stock = (Integer) getSession().createQuery(hql2).setString(0, isbn).uniqueResult();35         if(stock ==0){36             throw new BookStockException("库存不足");37         }38         String hql = "update Book b set b.stock=b.stock -1 where b.isbn =?";39         getSession().createQuery(hql).setString(0, isbn).executeUpdate();40     }41 42     @Override43     public void updateUserAccount(String username, int price) {44 //        验证余额是否足够45         String hql2 = "select a.balance from Account a where a.username = ?";46         Integer balance = (Integer) getSession().createQuery(hql2).setString(0, username).uniqueResult();47         if(balance < price){48             throw new UserAccountException("余额不足");49         }50         String hql = "UPDATE Account a SET a.balance = a.balance - ? where a.username = ? ";51         getSession().createQuery(hql).setInteger(0, price).setString(1, username).executeUpdate();52     }53 54 }

 

service实现类

1 package com.spring.hibernate.service.Impl; 2  3 import java.util.List; 4  5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Service; 7  8 import com.spring.hibernate.service.BookShopService; 9 import com.spring.hibernate.service.CashierService;10 11 @Service("cashierService")12 public class CashierServiceImpl implements CashierService {13 14     @Autowired15     private BookShopService bookShopService;16     17     /**18      * Spring hibernate 事务的流程19      * 1.方法开始之前20      * a.获取session21      * b.把session和当前线程绑定,这样就可以在Dao中使用SessionFactory的getSession()方法来获取session了22      * c.开启事务23      * 24      * 2.若方法正常提交结束,没有出现异常25      * a.提交事务26      * b.使和当前绑定的session解除绑定27      * c.关闭session28      * 29      * 3.若方法出现异常30      * a.回滚事务31      * b.使和当前绑定的session解除绑定32      * c.关闭session33      */34     35     @Override36     public void checkout(String username, List
ibsns) {37 for(String isbn:ibsns){38 bookShopService.purchase(username, isbn);39 }40 }41 42 }

 

实体类对应生成hbm.xml文件

1 
2 4 5
6
7 8
9
10
11
12 13
14
15
16 17
18
19
20 21
22

 

1 
2 4 5
6
7 8
9
10
11
12 13
14
15
16 17
18
19
20 21
22
23
24 25
26
27
28 29
30

 

转载于:https://www.cnblogs.com/duyunchao-2261/p/7505941.html

你可能感兴趣的文章
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
淡定,啊。数据唯一性
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>