HibernateDaoSupport与JdbcDaoSupport总结

Spring中Dao 的支持类可以有好多,如: JdbcDaoSupport , HibernateDaoSupport ,JdoDaoSupport等,下面对最常用的HibernateDaoSupport与JdbcDaoSupport做一小总结:

1、借助类JdbcDaoSupport的简约化实现:
借助这个类不需要HIbernate框架,也不需要有ORM的对象关联映射。但它和HibernateDaoSupport很类似,有JdbcTemplate来实现增、删、改、查操作。

public class PersonDaoJdbcTest {


	public static void main(String[] args) throws Exception {


		ApplicationContext ctx=new  ClassPathXmlApplicationContext("applicationContext.xml");


		PersonDao pd=(PersonDao) ctx.getBean("persondao");


		pd.createPerson(new PersonBean("abdaslf",34));


		System.out.println(pd.findPersonsByName("yan"));


		System.out.println("finished!");


	}


}


public class PersonDaoJdbc extends JdbcDaoSupport implements PersonDao{


	public void createPerson(PersonBean p) throws Exception {


		Object[] args={p.getName(),new Integer(p.getAge())};


		this.getJdbcTemplate().update("insert into person(p_name,p_age) values(?,?)", args);


	}


	public void deletePerson(int id) throws Exception {


		Object [] args={new Integer(id)};


		this.getJdbcTemplate().update("delete from person where id=?",args);


	}


}


public List findPersonsByName(String name) throws Exception {


		// TODO Auto-generated method stub


		return this.getJdbcTemplate().query("select * from person where p_name like '%"+name+"%'", new PersonRowMapper());


	}

需要在Spring的配置文件applicationContext.xml中控制反转用到连接数据库中的类是注入DataSource,如下:
applicationContext.xml:

<!-- 数据源配置 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver"> 
		</property> 
		<property name="url"
			value="jdbc:mysql://localhost:3306/persondatabase">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
	</bean>
   <bean id="persondao" class="yan.dao.jdbc.PersonDaoJdbc">
    <!-- 为dao实例注入所需的DataSource -->
     <property name="dataSource">
       <ref local="dataSource"/>
     </property>
   </bean>

Spring负责链接数据库,程序无须访问具体的Statement和PreparedStatement,Spring负责创建Statement对象。DAO部分通过JdbcTemplate的方法,就可完成绝大部分数据库的CRUD操作,通过RowMapper接口的支持,可以将ResultSet自动包装成值对象。通过Spring的DaoSupport来实现DAO,程序更加简洁、同一。

2、借助类HibernateDaoSupport的简约化实现:
借助这个类必须需要HIbernate框架,用到HIbernate里提供的HibernateTemplate模板,从而进行增、删、改、查操作。
TestA.java:
public class TestA extends HibernateDaoSupport{
public void test(){
     HibernateTemplate template = this.getHibernateTemplate();
     List list = template.find("from User");
     for(int i=0;i<list.size();i++){
      User u = (User)list.get(i);
      System.out.println(u.getUserid()+" "+u.getEmail());
     }
}

public static void main(String[] args) {
           ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
           TestA t = (TestA)ctx.getBean("testa");
           t.test();
}
}
需要在Spring的配置文件applicationContext.xml中控制反转用到连接数据库中的类是注入SessionsFactory,如下:
applicationContext.xml:
        <bean id="testa" class="com.sun.demo.TestA">
        <property name="sessionFactory">
        <ref bean="mySessionFactory"/>
        </property>
        </bean>

你可能感兴趣的:(DAO,spring,bean,Hibernate,mysql)