ssh应用3

来源:互联网 发布:centos安装邮件服务器 编辑:程序博客网 时间:2024/05/03 05:11
JavaEE应用无非就是java操作数据库,现在hibernate替我们完成了数据库的映射,我们要考虑如何访问数据库了。在传统的JDBC中,访问数据库要使用connection,同样,在hibernate中访问数据库需要session,而session是由sessionFactory产生的,因此我们需要为sessionFactory配置数据源,同时告诉sessionFactory,它产生的session要能访问到那些数据库,因此配置文件中有了这样的一段配置,
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/atm"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
<property name="maxPoolSize" value="40"/>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="20"/>
</bean>

<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>

<property name="mappingResources">
<list>
<value>org/atm/po/Customer.hbm.xml</value>
<value>org/atm/po/Card.hbm.xml</value>
<value>org/atm/po/CardType.hbm.xml</value>
<value>org/atm/po/CardLog.hbm.xml</value>
<value>org/atm/po/Bank.hbm.xml</value>
<value>org/atm/po/Atm.hbm.xml</value>
<value>org/atm/po/AtmLog.hbm.xml</value>
</list>
</property>

<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>

有了sessionFactory我们就有了session,有了session我们就可以操作数据库了,下面我们来看DAO层,此层的代码放到dao文件夹中,在PO层有多少类,在DAO就有多少dao对象,每个dao负责访问一个po类,通常我们使用面向接口变成,在dao文件夹中写要实现的数据库访问方法,在dao的子目录impl中写实现。由于每个dao类都需要一个session类,因此早就有人写了一个类,这个类有一个参数sessionFactory,实现了一些常用的方法,因此我们可以看到真实的dao层是这样的:
package org.atm.dao;
import java.util.*;
import org.atm.po.*;


public interface AtmDao
{

Atm get(Integer id);

Integer save(Atm atm);

void update(Atm atm);


void delete(Atm atm);


void delete(Integer id);


List<Atm> findAll();

List<Atm> findByAddress(String address);

List<Atm> findByHaveNoMoney();

}

package org.atm.dao.impl;
import java.util.*;
import org.atm.po.*;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.atm.dao.*;
public class AtmDaoImpl extends HibernateDaoSupport implements AtmDao
{

public Atm get(Integer id)
{
return getHibernateTemplate().get(Atm.class,id);
}

public Integer save(Atm atm)
{
return (Integer)getHibernateTemplate().save(atm);
}

public void update(Atm atm)
{
getHibernateTemplate().update(atm);
}


public void delete(Atm atm)
{
getHibernateTemplate().delete(atm);
}


public void delete(Integer id)
{
getHibernateTemplate().delete(get(id));
}


public List<Atm> findAll()
{
return (List<Atm>)getHibernateTemplate().find("from Atm");
}

public List<Atm> findByAddress(String address)
{
return (List<Atm>)getHibernateTemplate().find("from Atm where address=?",address);
}

public List<Atm> findByHaveNoMoney()
{
return (List<Atm>)getHibernateTemplate().find("from Atm where money<=0");
}

}

将每个pojo对应一个dao后,DAO层就写好了。但是不要忘记,dao层的每个类需要有个参数sessionFactory,因此可以看到在配置文件中:
<bean id="daoTemplate" abstract="true" lazy-init="true">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="customerDao"class="org.atm.dao.impl.CustomerDaoImpl" parent="daoTemplate"/>
<bean id="cardDao"    class="org.atm.dao.impl.CardDaoImpl"     parent="daoTemplate"/>
<bean id="cardtypeDao"class="org.atm.dao.impl.CardTypeDaoImpl" parent="daoTemplate"/>
<bean id="cardlogDao"   class="org.atm.dao.impl.CardLogDaoImpl" parent="daoTemplate"/>
<bean id="bankDao"    class="org.atm.dao.impl.BankDaoImpl" parent="daoTemplate"/>
<bean id="atmDao"    class="org.atm.dao.impl.AtmDaoImpl"     parent="daoTemplate"/>
<bean id="bankemployeeDao"    class="org.atm.dao.impl.BankEmployeeDaoImpl"     parent="daoTemplate"/>
<bean id="atmlogDao" class="org.atm.dao.impl.AtmLogDaoImpl" parent="daoTemplate"/>
自此,dao层结束。

  
0 1