Spring整合Hibernate有什么好处?
1、由IOC容器来管理Hibernate的SessionFactory
2、让Hibernate使用上Spring的声明式事务
整合前准备:
持久化类:
@Entity publicclassBook { privateIntegerid; privateStringbookName; privateStringisbn; privateintprice; privateintstock; publicIntegergetId() { returnid; } publicvoidsetId(Integerid) { this.id=id; } publicStringgetBookName() { returnbookName; } publicvoidsetBookName(StringbookName) { this.bookName=bookName; } publicStringgetIsbn() { returnisbn; } publicvoidsetIsbn(Stringisbn) { this.isbn=isbn; } publicintgetPrice() { returnprice; } publicvoidsetPrice(intprice) { this.price=price; } publicintgetStock() { returnstock; } publicvoidsetStock(intstock) { this.stock=stock; } publicBook(Integerid,StringbookName,Stringisbn,intprice,intstock) { super(); this.id=id; this.bookName=bookName; this.isbn=isbn; this.price=price; this.stock=stock; } }Dao层:
publicinterfaceBookDao { publicStringfindBookById(intid); publicvoidsaveBook(Bookbook); }DaoImpl:
@Repository publicclassBookDaoImplimplementsBookDao { @Autowired privateSessionFactorysessionFactory; //获取和当前线程绑定的Seesion privateSessiongetSession() { returnsessionFactory.getCurrentSession(); } publicStringfindBookById(intid) { Stringhql="SELECTbookNamefromBookwhereid=?"; Queryquery=getSession().createQuery(hql).setInteger(0,id); Stringstr=query.uniqueResult().toString(); returnstr; } publicvoidsaveBook(Bookbook) { getSession().save(book); } }Service层:
publicinterfaceBookService { publicStringfindBookById(intid); publicvoidsaveBook(Bookbook); }ServiceImpl:
@Service publicclassBookServiceImplimplementsBookService { @Autowired privateBookDaobookDao; publicStringfindBookById(intid) { returnbookDao.findBookById(id); } publicvoidsaveBook(Bookbook) { bookDao.saveBook(book); } } 1、加入Hibernate加入hibernatejar包
添加Hibernate的配置文件:hibernate.cfg.xml
org.hibernate.dialect.MySQL5Dialect true update编写持久化类对应的.hbm.xml文件
2、加入Spring加入springjar包
加入Spring配置文件
<context:component-scanbase-package="com.demo.ssm"></context:component-scan>
<!--配置Spring声明式事务--> <beanid="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <!--配置事务事务属性--> <tx:adviceid="txAdvice"transaction-manager="transactionManager"> <tx:attributes> <tx:methodname="get*"read-only="true"/> <tx:methodname="*"/> </tx:attributes> </tx:advice> <!--配置事务切点,并把切点和事务属性关联起来--> <aop:config> <aop:pointcutexpression="execution(*com.demo.ssm.daoImpl.*.*(..))"id="txPointcut"/> <aop:advisoradvice-ref="txAdvice"pointcut-ref="txPointcut"/> </aop:config> 3、编写测试类 publicclassBookDaoImplTest { privateApplicationContextcontext=null; privateBookServicebookService=null; { context=newClassPathXmlApplicationContext("applicationContext.xml"); bookService=context.getBean(BookService.class); } @Test publicvoidtest() { DataSourcedataSource=(DataSource)context.getBean(DataSource.class); System.out.println(dataSource); } @Test publicvoidtest2() { StringbookName=bookService.findBookById(1); System.out.println(bookName); } @Test publicvoidtest3() { bookService.saveBook(newBook(2,"android源码分析","1002",45,10)); } }本文内容总结:一、概述,二、整合步骤,
原文链接:https://www.cnblogs.com/xujian2014/p/5282335.html