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层结束。
分享到:
相关推荐
在这个"简单的ssh应用"中,我们将会探讨SSH框架的核心概念和它们如何协同工作。 Struts2是MVC(Model-View-Controller)设计模式的实现,负责处理HTTP请求并控制应用程序流程。它提供了丰富的拦截器机制,允许...
1、本示例是一个简单的ssh应用,对单表进行新增和查询操作; 2、使用ssh版本为struts2-core-2.3.1.2,spring-aop-3.0.5.RELEASE,hibernate-3.6.5.Final; 3、struts2的配置采用xml(目前不支持annotation),spring和...
在企业级应用中,SSH的重要性不言而喻,因为它能够保证数据传输的安全性,防止敏感信息被窃取或篡改。下面将详细阐述SSH的核心功能、工作原理以及在企业中的应用。 SSH主要提供了以下功能: 1. **加密通信**:SSH...
【使用SSH构建Web应用系统】 SSH(Struts、Spring、Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可扩展的Web应用。这个框架集合提供了MVC模式、依赖注入和对象关系映射等功能,极大地提高了开发...
ssh的一些实用,大家可以拿去看看,呵呵,希望能给你帮助
《轻量级JAVAEE企业应用实战SSH2整合开发》是一本深入浅出的教程,主要讲解如何使用Struts2、Hibernate和Spring这三大框架(SSH)进行集成开发,以实现高效、灵活的企业级应用程序。第二版针对初学者和有一定经验的...
压缩包中的文件名"SSH.NET-develop"暗示了这包含的是SSH.NET的开发资源,可能包括源代码、文档、示例应用等。 SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地执行命令、传输数据。它通过加密技术...
根据提供的文件内容,本文将讨论SSH隧道下应用协议识别的网络安全研究的关键知识点,内容涵盖应用层信息识别的重要性、SSH协议的分析、流量监控技术、以及加密协议对网络监控的影响等。 1. 应用层信息识别的重要性 ...
3. **Struts框架**: Struts是基于MVC设计模式的Web应用框架,主要用于控制应用程序的流程。它通过Action类来处理用户的请求,并决定接下来的视图。在JSF+SSH集成中,Struts通常用作连接JSF和Spring的桥梁,处理HTTP...
SSH整合与JSON的应用是现代软件开发中的重要环节,特别是在分布式系统和远程服务器管理中。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地执行命令和传输数据,而JSON(JavaScript Object Notation...
3. **CI/CD系统**:在Jenkins、Travis CI或GitLab CI等CI/CD工具中,SSH集成使得构建和部署过程能自动地与远程服务器交互,比如拉取代码、编译、测试和部署应用程序。 4. **远程服务器管理**:通过SSH,可以集成到...
总之,"简单ssh2框架程序"是一个基于SSH2的Web应用程序,利用Spring管理业务组件,Struts2处理用户交互,Hibernate处理数据库操作。通过这三个框架的协同工作,实现了用户登录、注册和登出的基本功能,为更复杂的...
- 对于现代应用,建议使用更强大的密码存储机制,如BCrypt或Argon2,它们可以抵御专门针对哈希函数的攻击。 通过上述步骤,开发者可以使用Java实现SSHA加密,保护用户密码的安全。在实际项目中,除了密码加密,还...
3. **配置SSH框架**:为Struts2、Spring和Hibernate设置相应的配置文件,如struts.xml、spring-context.xml、hibernate.cfg.xml,定义动作、bean和数据源等。 4. **设计模型(Model)**:创建Java类作为数据模型,...
SSH可用jar包通常指的是包含SSH相关功能的Java库,使得开发者能够在Java应用中集成SSH服务。 在Java开发中,SSH主要涉及三个组件:Spring、Struts和Hibernate。它们分别是用于处理应用框架、用户界面和数据持久化的...
在"ssh2框架练习项目及代码"中,我们可以深入学习和实践SSH2框架的核心功能和应用场景。 Spring框架是SSH2的核心,它提供了一个全面的基础设施,支持从简单的Bean管理到复杂的AOP(面向切面编程)和事务管理。...
VB中的SSH应用可能涉及以下知识点: 1. SSH连接:创建SSH客户端对象,设置服务器地址、端口、用户名和认证方式。 2. 密钥管理:处理公钥和私钥文件,加载到VB程序中进行身份验证。 3. 远程命令执行:通过SSH通道...
这些库封装了SSH协议的复杂性,使得开发者可以方便地在Android应用中集成SSH功能。 3. **JSch库**: JSch是Java的一个SSH库,可以用于建立SSH连接、执行命令、文件传输等。在Android项目中,可以通过Gradle或Maven...
的高效应用,首先需要了解SSH框架和jQuery技术的基本概念及其特点。 SSH框架是Spring、Struts和Hibernate三个开源项目的简称,它们分别负责控制层、表现层和持久层的开发。Spring是一个全面的企业级应用框架,提供...