在上一节中,我在做spring整合struts时,业务逻辑层只是简单地用一个方法判断固定的用户登录。而这一节,我们添加了DAO层,支持从数据库里取出持久化对象的验证。
主要的做法是:
(1)新建一个持久化对象User.java
package org.lee.managersys.model;
import java.io.Serializable;
public class User implements Serializable{
private int id;
private String user;
private String password;
public User(){}
public User(int id,String user,String password){
this.id=id;
this.user=user;
this.password=password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
(2)配置此对象的映射User.hbm.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping
PUBLIC "//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.lee.managersys.model">
<class name="User" table="ms_user">
<id name="id" type="integer" column="user_id">
<generator class="identity" />
</id>
<property name="user" type="string" length="20" not-null="true"></property>
<property name="password" type="string" length="32" not-null="true"></property>
</class>
</hibernate-mapping>
(3)接下来实现此持久化对象的DAO层,我首先新建了一个DAO的接口,然后实现此接口,这样有利于SPRING的藕合。在整合时,一般都对此接口提供以下方法。你也可以在这接口中定义其他的方法。
UserDao.java
package org.lee.managersys.dao;
import org.lee.managersys.model.User;
import java.util.List;
public interface UserDao {
public User get(int id);
public void save(User user);
public void update(User user);
public void delete(User user);
public void delete(int id);
public List<User> findAll();
public boolean findNameAndPass(String name,String pass);
}
(4)实现UserDao接口,spring对Hibernate的支持主要体现在,它提供了很多*DaoSupport,尤其是HibernateDaoSupport。这个类提供了一个getHibernateTemplate()方法来获取HibernateTemplate对象,以此来实现对持久化对象的操作。
UserDaoHibernate.java
package org.lee.managersys.dao;
import java.util.Iterator;
import java.util.List;
import org.lee.managersys.model.User;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDaoHibernate extends HibernateDaoSupport implements UserDao{
@Override
public User get(int id) {
// TODO Auto-generated method stub
return (User) getHibernateTemplate().get(User.class, id);
}
@Override
public void save(User user) {
// TODO Auto-generated method stub
getHibernateTemplate().save(user);
}
@Override
public void update(User user) {
// TODO Auto-generated method stub
getHibernateTemplate().update(user);
}
@Override
public void delete(User user) {
// TODO Auto-generated method stub
getHibernateTemplate().delete(user);
}
@Override
public void delete(int id) {
// TODO Auto-generated method stub
getHibernateTemplate().delete(get(id));
}
@SuppressWarnings("unchecked")
@Override
public List<User> findAll() {
// TODO Auto-generated method stub
return (List<User>)getHibernateTemplate().find("from User");
}
@Override
public boolean findNameAndPass(String name, String pass) {
// TODO Auto-generated method stub
boolean result=false;
Iterator<User> it=findAll().iterator();
while(it.hasNext()){
User user=it.next();
if(user.getUser().equals(name) &&
user.getPassword().equals(pass)){
result=true;
}
else{
result=false;
}
}
return result;
}
}
(5)接下来便是对Context进行配置。利用SPRING,我们可以轻松地配置HIBERNATE。只需要三个Bean。
applicationContext.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!--指定驱动器-->
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<!--指定URL-->
<property name="jdbcUrl" value="jdbc:mysql://localhost/normal" />
<!--指定用户名-->
<property name="user" value="root" />
<!--指定密码-->
<property name="password" value="admin" />
<!--指定最大连接数-->
<property name="maxPoolSize" value="40" />
<!--指定最小连接数-->
<property name="minPoolSize" value="1" />
<!--指定初始化连接数-->
<property name="initialPoolSize" value="1" />
<!--指定连接池最大空闲时间-->
<property name="maxIdleTime" value="20" />
</bean>
<!--定义hibernate中的sessionFactory-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--依赖注入,注入上面的dataSource的Bean-->
<property name="dataSource" ref="dataSource" />
<!--映射所有的持久化对象-->
<property name="mappingResources">
<list>
<value>org/lee/managersys/model/User.hbm.xml</value>
</list>
</property>
<!--定义hibernate中sessionFactory的属性-->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
<!--配置Hibernate局部的事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--注册DAO的BEAN-->
<bean id="userDao" class="org.lee.managersys.dao.UserDaoHibernate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--配置业务逻辑层组件 -->
<bean id="ms" class="org.lee.managersys.service.MyServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
</beans>
(6)以上是Hibernate的配置,但只有这些还不够,我们还要在业务逻辑组件中配置一个UserDao,以此来实现对持久化对象的访问。
MyServiceImpl.java
package org.lee.managersys.service;
import org.lee.managersys.dao.UserDao;
public class MyServiceImpl implements MyService{
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
@Override
public boolean valid(String user,String password){
if(userDao.findNameAndPass(user, password)){
return true;
}
else{
return false;
}
}
}
至此,我便完成了一个简单的J2EE的WEB应用,但是这样还不够,因为缺少事务管理。缺少事务机制的WEB应用缺点是很难想象的。下一节,我将继续对SPRING的事务机制进行学习。
分享到:
相关推荐
spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式
ssh整合,针对spring整合hibernate代码,示例代码,教程。
Spring整合Hibernate的所有jar包,辛苦整理两个小时,给大家分享出来。 一共27个包
Spring整合hibernate(2)之基于HibernateTemplate的整合,jar需要自己添加!
Spring+hibernate整合源代码 结束Sping+hibernate 的使用方法 包括演示示例
spring mvc + spring + hibernate 全注解整合开发视频教程 11
spring-hibernate.jar
Spring框架整合Hibernate框架,为大家提供一个学习案例.
spring整合hibernate所用相关jar包,适合初学者
spring与hibernate的整合 spring事务的配置
Spring3.3与Hibernate2.1整合
spring整合hibernate的所需jar包,很全的!
Spring整合Hibernate配置测试示例
spring_hibernate整合实例 spring_hibernate整合实例
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
这是使用spring整合hibernate、struts时所要用到的核心jar包,洗完对大家有帮助
hibernate与spring整合demohibernate与spring整合demo
Spring4整合Hibernate4实现用户购买图书和结账等操作,整合主要实现用IoC容器来管理Hibernate的SessionFactory实例,并使Hibernate使用Spring所提供的声明式事务……
Spring与hibernate 整合 简单示例 Spring与hibernate 整合 简单示例
一个小小的测试Demo,Spring+Hibernate整合,适合初学入门者