struts与spring整合时使用与不使用hibernate时的applicationContext.xml文件配置问题

本文对比了在不使用hibernate时通过DAO直接与dataSource打交道的方法与使用hibernate通过sessionFactory与dataSource交互的方法。详细阐述了两种方式下的UserDAO实现代码,并分析了各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当不使用hibernate操作数据库时,DAO直接和dataSource打交道,配置如下:
	<bean id="userDAO" class="com.demo.spring.dao.UserDAO">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>

对应的UserDAO代码如下:
package com.demo.spring.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

public class UserDAO {
private DataSource dataSource;

public DataSource getDataSource() {
return dataSource;
}

public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}

@SuppressWarnings("unchecked")
public boolean isValid(String username, String password) {
List userList = new ArrayList();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
userList = jdbcTemplate.query("SELECT * FROM user WHERE username='"
+ username + "' and password='" + password + "'",
new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum)
throws SQLException {
User user = new User();
user.setId(rs.getString("ID"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
return user;
}
});
if (userList.size() > 0) {
return true;
} else {
return false;
}
}

public boolean isExist(String username) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
int count = jdbcTemplate.queryForInt("SELECT count(*) FROM user WHERE username='" + username
+ "'");
if (count > 0) {
return true;
} else {
return false;
}
}

public void insertUser(User user) {
String username = user.getUsername();
String password = user.getPassword();
String email = user.getEmail();
JdbcTemplate jt = new JdbcTemplate(getDataSource());
jt.update("insert into user(username,password,email) values ('"
+ username + "','" + password + "','" + email + "');");
}
}



当使用hibernate进行数据库操作时,DAO是和sessionFactory打交道,而sessionFactory是和dataSource进行联系的,配置代码如下:
	<!-- 配置hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/ssh/beans/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<bean id="userDAO" class="com.ssh.dao.impl.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

这是的UserDAO的代码如下:
package com.ssh.dao.impl;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.ssh.beans.User;
import com.ssh.dao.interfaces.IUserDAO;


@SuppressWarnings("unchecked")
public class UserDAO extends HibernateDaoSupport implements IUserDAO{

public void deleteUser(String userid) {
Object p = getHibernateTemplate().load(User.class, new Integer(userid));
getHibernateTemplate().delete(p);
}

public User getUser(String userid) {
return (User) getHibernateTemplate().get(User.class,
new Integer(userid));
}


public List getUsers() {
return getHibernateTemplate().find("from User");
}

public void insertUser(User user) {
getHibernateTemplate().saveOrUpdate(user);
}

public boolean isExist(final String username) {
List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
List result = session.createCriteria(User.class).add(
Restrictions.eq("username", username)).list();
return result;
}
});
if (list.size() > 0) {
return true;
} else {
return false;
}
}

public boolean isValid(final String username, final String password) {
List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
List result = session.createCriteria(User.class).add(
Restrictions.eq("username", username)).add(
Restrictions.eq("password", password)).list();
return result;
}
});
if (list.size() > 0) {
return true;
} else {
return false;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值