




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hibernate Maven Spring JDBC 入门目录Spring JDBC1首先给出项目的Maven依赖:1第一步 Dao和Service2第二步 写配置文件3第三步 编写测试类7Spring Hibernate8首先给出项目的maven依赖8第一步 编写ORM、DAO和Service9第二步 配置文件13第三步 编写测试类16Spring JDBC这个例子是银行转账的例子。只做一件事情:从A转钱给B。首先给出项目的Maven依赖:junitjunit3.8.1testorg.springframeworkspring-context4.2.0.RELEASEmysqlmysql-connector-java5.1.36c3p0c3p0org.springframeworkspring-jdbc4.2.0.RELEASEorg.springframeworkspring-test4.2.0.RELEASEorg.springframeworkspring-aspects4.2.0.RELEASE第一步 Dao和Service写DAO和Service。这里需要注意的是一定要用面向接口编程,要不然后面用Spring Test会遇到麻烦。AccountDao.javapackage com.rhythm.springtransaction.demos.demo3;public interface AccountDao public void in(String in, double money);public void out(String out, double money);AccountImpl.java/* 这里用到了JDBC的模板。需要继承自JdbcDaoSupport。*/package com.rhythm.springtransaction.demos.demo3;import org.springframework.jdbc.core.support.JdbcDaoSupport;public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao public void in(String in, double money) / TODO Auto-generated method stubthis.getJdbcTemplate().update(update account set money = money + ? where name = ?, money, in);public void out(String out, double money) / TODO Auto-generated method stubthis.getJdbcTemplate().update(update account set money = money - ? where name = ?, money, out);AccountService.javapackage com.rhythm.springtransaction.demos.demo3;public interface AccountService public void transfer(String in, String out, double money);AccountServiceImpl.java/* 注意需要添加setAccountDao方法。否则不能注入。*/package com.rhythm.springtransaction.demos.demo3;public class AccountServiceImpl implements AccountService private AccountDao accountDao;public void transfer(String in, String out, double money) / TODO Auto-generated method stubaccountDao.out(out, money);System.out.println(1 / 0);/用来测试事务是否生效accountDao.in(in, money);public void setAccountDao(AccountDao accountDao) this.accountDao = accountDao;第二步 写配置文件首先应该写perties文件,把数据库的相关属性统一写在这个文件中。perties/*那个spring-transacton是数据库名字。这里没有localhost有点奇怪。*/jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:/spring-transactionjdbc.username=rootjdbc.password=root然后是最为关键的applicationContext.xml文件先给一个整体的文件:applicationContext.xml然后分段介绍首先是头:这边引用了bean、context、aop和tx的语法文件。注意版本:导入的spring是4.2就用4.2(编辑器会先在本地去找,就在jar包里)其次是引入数据库的配置文件:注意位置在src目录下。在不同情况下src目录可能会给人造成困扰。判断是否正确的标准就是编译之后是否在classes目录下。applicationContext.xml也是同理。配置dataSource(数据源)因为引入了数据库配置文件,所以可以用$jdbc.driverClass的形式引用配置文件的属性和值。分别给accountDao和accountService的实现类注入dataSource和accountDao因为accountDao使用了jdbc模板,所以需要注入dataSource配置事务管理器Jdbc的事务管理器跟Hibernate的数据库管理器是不一样的。配置事务的增强 tx:advice 首先增强是包含方向信息(前后,环绕,异常)和增强代码的。tx:method中指定了需要使用这个增强的方法。名叫:“transfer”,也可以改成“add*”表示所有以add开头的方法。最后是切面和切点:注意切面是包含切点和增强的。切点是满足切点表达式的集合。也是定位到某个类某个方法。切点表达式举例:第三步 编写测试类这一步就一个文件TestDemo3.java/* 这里使用了三个注解:ContextConfiguration、RunWith、Resource* 注意Resource下面的private后面跟的是接口而不是实现类。*/package com.rhythm.springtransaction.demos;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.rhythm.springtransaction.demos.demo3.AccountService;ContextConfiguration(classpath:applicationContextDemo3.xml)RunWith(SpringJUnit4ClassRunner.class)public class TestDemo3 Resource(name=accountService)private AccountService accountService;/这里不能用AccountServiceImpl 面向接口编程!Testpublic void testDemo()accountService.transfer(aaa, bbb, 20d);Spring Hibernate这个项目就做两件事情,一件事情是向数据库插入一个用户,然后是从数据库取出所有的用户。项目结构:首先给出项目的maven依赖org.springframeworkspring-context4.2.0.RELEASEorg.springframeworkspring-test4.2.0.RELEASEorg.springframeworkspring-jdbc4.2.0.RELEASEorg.springframeworkspring-orm4.2.0.RELEASEorg.springframeworkspring-aspects4.2.0.RELEASEc3p0c3p0org.hibernatehibernate-core5.0.2.Finalmysqlmysql-connector-java5.1.36junitjunit3.8.1test第一步 编写ORM、DAO和ServiceUser.java/* 一定要有get和set*/package com.rhythm.HbnDemos.orm;public class User private String userName;private float age;private int id;public String getUserName() return userName;public void setUserName(String userName) this.userName = userName;public float getAge() return age;public void setAge(float age) this.age = age;public int getId() return id;public void setId(int id) this.id = id;User.hbm.xml/* 对象和表的映射文件。*/IUserDao.java/* 这里抛弃了原有的命名方式,给接口(Interface)的名字加上了I*/package com.rhythm.HbnDemos.demo1;import java.util.List;import com.rhythm.HbnDemos.orm.User;public interface IUserDao public void addUser(User user);public List allUser();UserDao.java/* 跟JDBC一样,这里使用了Hibernate模板。* 注意HQL的编写 select us from User as us。 这里的User不能是表的名字,而是对象的名* 字。*/package com.rhythm.HbnDemos.demo1;import java.util.List;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.rhythm.HbnDemos.orm.User;public class UserDao extends HibernateDaoSupport implements IUserDao public void addUser(User user) / TODO Auto-generated method stubthis.getHibernateTemplate().save(user);public List allUser() / TODO Auto-generated method stubreturn this.getHibernateTemplate().find(select us from User as us order by us.id);IUserService.javapackage com.rhythm.HbnDemos.demo1;import java.util.List;import com.rhythm.HbnDemos.orm.User;public interface IUserService public void addUser(User user);public List allUsers();UserService.javapackage com.rhythm.HbnDemos.demo1;import java.util.List;import com.rhythm.HbnDemos.orm.User;public class UserService implements IUserService IUserDao userDao;public void addUser(User user) / TODO Auto-generated method stubuserDao.addUser(user);public List allUsers() / TODO Auto-generated method stubreturn userDao.allUser();public void setUserDao(IUserDao userDao) this.userDao = userDao;第二步 配置文件Jpertiesjdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:/esyojdbc.username=rootjdbc.password=rootapplicationContext.xml跟jdbc的有些地方一致,其他地方我补充一下不一样的地方。com/rhythm/HbnDemos/orm/User.hbm.xmlorg.hibernate.dialect.MySQLDialecttrue50创建sessionFactory,sessionFactory需要在事务管理器和DAO中用到。后面mappingResourece可以在其他地方配置。com/rhythm/HbnDemos/orm/User.hbm.xmlorg.hibernate.dialect.MySQLDialecttrue50跟jdbc不一样,UserDao里面需要注入sessionFactoryHibernate的事务管理器跟jdbc的不同。需要引用不同的类和sessionFactory配置增强以add开头和以all开头配置切点和切面第三步 编写测试类TestDemo1.javapackage com.rhythm.HbnDemos;import java.util.List;import javax.annotation.Resource;import org.junit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家电维修质检方案
- 挖掘地产需求的市场调研报告
- 排气扇维修技巧总结
- 大数据中心工程转让与网络安全保障合同
- 咨询服务费收取方案模板
- 旅游主题活动策划方案范文
- 药物制剂工新员工考核试卷及答案
- 活性炭碳化工设备维护与保养考核试卷及答案
- 东莞网络整合营销方案
- 营养品主题营销方案模板
- 中药药剂员职业考核试卷及答案
- 2025年脚手架租赁合同3篇
- 医院检验科实验室生物安全程序文件SOP
- 焊材入库、发放与回收记录模板
- 生药学-绪论-第一章
- 一建市政记忆口诀
- Q∕GDW 12175-2021 单相智能物联电能表技术规范
- PETS公共英语二级大纲词汇
- 消控室制度上墙
- 蜗轮参数化设计(creo2.0)
- 高应变检测报告(共9页)
评论
0/150
提交评论