spring连结数据库(jdbc , hibernate)
来源:互联网 发布:电脑软件安装 编辑:程序博客网 时间:2024/05/16 04:19
一Spring的数据访问哲学
Spring的目标之一就是遵循Oo原则中的,面向接口编程原则,Spring的数据访问也是如此。
1 配置数据源
(1) 使用JDBC驱动的数据源
Spring里能够配置的最简单的数据源是通过JDBC驱动定义的,Spring提供了两个这样的数据源。
DriverManagerDataSource 在每个连接请求时都新建一个连结。
SingleConnectionDataSource 在每个连接的时候都返回同一个连结。
(2) 使用JDBC模板
Spring的jdbc模板能够承担资源管理和异常处理的工作,从而简化我们的jdbc代码。让我们只需编写从数据库
读写数据所必须的代码。以下为3个模板类:
a) JdbcTemplate : Spring 里最基本的JDBC模板,利用JDBC和简单索引参数查询提供对数据库的简单访问。
b) NameParameterJdbcTemplate 能够在执行查询时把值绑定到SQL里的参数名称,而不是使用索引参数。
c)SimpleJdbcTemplate
(3) 实例代码
//配置数据源
//
//
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/login</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
//配置jdbc模板类
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<property name="dataSource" ref="dataSource"></property>
</bean>
//建立DAO类
<bean id="roleDAO" class="cn.bupt.duming.pojo.RoleDAO" >
<property name="jdbcTemplate">
<ref local="jdbcTemplate"/>
</property>
</bean>
实体类 Role 如下:
package cn.bupt.duming.pojo;
public class Role {
private int id ;
private String name ;
public Role() {
}
public Role(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
RoleDAO 类
package cn.bupt.duming.pojo;
import java.sql.Types;
import org.springframework.jdbc.core.JdbcTemplate;
public class RoleDAO {
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void insertRole(Role role){
String sql="insert into role values(?,?)";
Object[] params=new Object[]{
role.getId() ,
role.getName()
};
int[] types=new int[]{
Types.INTEGER ,
Types.VARCHAR
};
this.getJdbcTemplate().update(sql,params,types);
}
}
测试代码如下:
BeanFactory factory = new XmlBeanFactory(
new FileSystemResource("applicationContext.xml")) ;
RoleDAO roleDAO = (RoleDAO) factory.getBean("roleDAO") ;
Role role= new Role() ;
role.setId(333) ;
role.setName("duming04") ;
roleDAO.insertRole(role) ;
二 spring 结合 hibernate
1 使用hibernate模板
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
2 配置典型的hibernate映射文件
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource">
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>cn/bupt/duming/vo/Student.hbm.xml</value> 此句完成spring到hibernate得映射
</list>
</property>
</bean>
3 设置数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/login</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
4 学生操作数据库类DAO 接口
public interface StudentDAO {
public void saveStudent(Student student) throws Exception;
}
5 DAO实现类
public class StudentDAOImpl implements StudentDAO {
private HibernateTemplate hibernateTemplate ;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public StudentDAOImpl(){
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public void saveStudent(Student student) throws Exception {
this.getHibernateTemplate().saveOrUpdate(student) ;
}
}
6 测试类
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"E:/programme/jsp/HibernateDemo2/src/applicationContext.xml");
//从工厂获得Knight
StudentDAOImpl studentDAOImpl = (StudentDAOImpl)ctx.getBean("studentDao") ;
Student student = new Student() ;
student.setId(11) ;
student.setName("duming") ;
try {
studentDAOImpl.saveStudent(student);
三 利用Spring提供的DAO支持类
1 建立基于HIbernate的DAO
Spring提供了HibernateDaoSupport ,它能够让我们把会话bean直接装配到dao类。代码如下:
//代码中不需要提供 hibernateTemplate 模板类
public class StudentDAOSupport extends HibernateDaoSupport implements StudentDAO{
public void saveStudent(Student student) throws Exception {
// TODO Auto-generated method stub
super.getSession().save(student) ;
}
public void updateStudent(Student student) throws Exception {
// TODO Auto-generated method stub
String hql = "update Student set name = ? where id =?" ;
Query q = super.getSession().createQuery(hql) ;
q.setString(0, student.getName()) ;
q.setInteger(1, student.getId()) ;
q.executeUpdate() ;
}
}
2 修改后的hibernateSupport配置文件
<bean id="hibernateSupport" class="cn.bupt.duming.db.StudentDAOSupport">
<property name="sessionFactory" ref="sessionFactory">
</property>
</bean>
3 测试类代码
StudentDAOSupport studentSupport = (StudentDAOSupport)ctx.getBean("hibernateSupport") ;
Student student = new Student() ;
student.setId(11) ;
student.setName("duming is king") ;
studentSupport.updateStudent(student) ;
- spring连结数据库(jdbc , hibernate)
- JDBC连结数据库
- JDBC的高级应用一 ——关于数据库连结
- JDBC连结SQL数据库报错 ,权限不够
- spring04 数据库操作 spring+jdbc/hibernate 及其声明式事务处理
- Java连结数据库内幕
- 数据库连结池
- JSP连结数据库大全
- JSP连结数据库大全
- Java连结数据库内幕
- Java连结数据库内幕
- Jsp连结数据库大全
- java数据库连结
- vc++连结数据库
- jsp连结sqlserver2008数据库
- Spring+JDBC 数据库实例
- 《Spring JDBC 操作数据库》
- Spring JDBC-使用Spring JDBC访问数据库
- 大型ORACLE数据库优化设计方案
- java.lang.string
- 数据库三级模式
- Oracle 树型结构查询
- 网络缓存大小引发的问题
- spring连结数据库(jdbc , hibernate)
- pku1485 Fast Food
- extmail和extman等应用分离
- DBA 职责及日常工作职责
- 通过SSH(22)端口 传输文件工具 (windows -- Linux)
- 各种 Listener 监听的动作
- SED使用
- 利用Eclipse自动生成comments(注释)
- 励志