请问大家什么是DAO?

TerryLhw1983 2006-11-07 04:33:58
数据反问对象怎么弄呢?
是不是把数据库连接等各种增删改查询操作都封装在这个类里面?
一个数据类对应一个DAO?还是所有的数据类对应一个DAO?
DAO类具体怎么写?有没有实例贴出来小弟参考啊?
多谢了!
...全文
505 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
TerryLhw1983 2006-11-10
  • 打赏
  • 举报
回复
哦,大概知道了。但是我想把Hibernate和Struts结合,在设计的时候还是有很多问题。头痛。菜蛋可否加我QQ?我通常晚上会在线。我的QQ185849143。验证消息写“菜蛋”就好。多谢帮忙啊。有不懂得想和你交流一下。
轩辕南方客 2006-11-09
  • 打赏
  • 举报
回复
DAO就是导,或者道,刀.
catastrophe 2006-11-09
  • 打赏
  • 举报
回复
Hibernate的配置文件hibernate.cfg.xml里面需要配置数据源

继承HibernateDAOSupport类后

getHibernateTemplate()方法返回的template对象有封装好的访问数据库方法

例如save delete 这是由hibernate框架提供的方法


TerryLhw1983 2006-11-09
  • 打赏
  • 举报
回复
是不是只要继承了HibernateDaoSupport,它本身就可以访问数据库?
TerryLhw1983 2006-11-09
  • 打赏
  • 举报
回复
是的,那在DAO类中为啥看不见连接数据库的语句,或者是有我没看见?帮忙指出一下在哪里。因为本人没用过Hibernate,所以不太懂啊。呵呵。错别字是不小心的。下次改正!
zz841229 2006-11-07
  • 打赏
  • 举报
回复
数据反问(访问)对象怎么弄呢?
答:就是数据库里面的表所对应的类(O/R映射),这个类里面的属性可以跟表的字段相关联(可以把他当成JAVABEAN看)

写错别字了,=.=!
zz841229 2006-11-07
  • 打赏
  • 举报
回复
数据反问(访问)对象怎么弄呢?
答:就是数据库里面的表所对应的类,这个类里面的属性可以跟类的字段相关联(可以把他当成JAVABEAN看)
是不是把数据库连接等各种增删改查询操作都封装在这个类里面?
答:是
一个数据类对应一个DAO?还是所有的数据类对应一个DAO?
答:最好一个类对应一个DAO
DAO类具体怎么写?
答:上面的已经给出来了
catastrophe 2006-11-07
  • 打赏
  • 举报
回复
//书上看的例子
import java.util.List;

import com.testmail.cls.MailInfo;

public interface MailInfoDAO
{
//新增邮件地址信息
boolean createMailInfo(MailInfo mailInfo);
//根据主键mailId查找邮件地址信息
List findByMailId(String mailId);
//修改邮件地址信息
boolean editMailInfo(MailInfo mailInfo);
//删除邮件地址信息
boolean deleteByMailId(MailInfo mailInfo);
}

import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;

import com.testmail.cls.MailInfo;
/*
* 继承Spring提供的HibernateDaoSupport类 并实现MailInfoDAO接口
*/
public class MailInfoDAOI extends HibernateDaoSupport implements MailInfoDAO
{
/*
*新建一条"邮件地址"信息
*/
public boolean createMailInfo(MailInfo mailInfo) {
try{
this.getHibernateTemplate().save(mailInfo);
return true;
}catch(DataAccessException ex){
ex.printStackTrace();
return false;
}
}
/*
*根据主键查找当前"邮件地址"信息
*/
public List findByMailId(String mailId) {
try{
return this.getHibernateTemplate().find(
"FROM com.testmail.cls.MailInfo AS MailInfo"
+"WHERE MailInfo.mailid='"+mailId+"'");
}catch(DataAccessException ex){
ex.printStackTrace();
return null;
}
}
/*
*修改当前"邮件地址"信息
*/
public boolean editMailInfo(MailInfo mailInfo) {
try{
this.getHibernateTemplate().saveOrUpdate(mailInfo);
return true;
}catch(DataAccessException ex){
ex.printStackTrace();
return false;
}
}
/*
*删除当前"邮件地址"信息
*/
public boolean deleteByMailId(MailInfo mailInfo) {
try{
this.getHibernateTemplate().delete(mailInfo);
return true;
}catch(DataAccessException ex){
ex.printStackTrace();
return false;
}
}
}
catastrophe 2006-11-07
  • 打赏
  • 举报
回复
一个数据类对应一个DAO
tcmis 2006-11-07
  • 打赏
  • 举报
回复
DAO就是数据访问对象,主要是用来进行表的CURD,一般是一个表对应一个DAO,当然也可以写个通用的。。这个看自己了。。

先定义一个DAO Interface
package com.ems.hibernate.dao;

import java.util.List;

import com.ems.database.hibernate3.pojo.Classroom;

public interface IClassroomDAO {

public abstract List query();

public abstract List findArrangeThings();

public abstract List findBuilding();

public abstract List findClassrooms(String building);

public abstract void save(Classroom transientInstance);

public abstract Classroom query(String pk);

public void del(String pk);

public abstract List find(String conditions);

}

然后写一个DAO implement
package com.ems.hibernate.dao.imp;

import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.ems.database.hibernate3.pojo.Classroom;
import com.ems.hibernate.dao.IClassroomDAO;

public class ClassroomDAO extends HibernateDaoSupport implements IClassroomDAO {

public List query() {
List classroom = getHibernateTemplate().find(
" from Classroom t order by no");
if (classroom.size() > 0) {
return classroom;
}
return null;
}

/**
* 得到每个教室安排的班级数和考试科目数列表
*/
public List findArrangeThings() {
String hql = "select a.pk, a.no, a.teachingBuilding, a.floor,a.seatAmount, b.classAmount, b.subjectAmount "
+ " from Classroom a,ExaminationRoomPlanRule b "
+ " where a.seatAmount >= b.seatRangeBegin and a.seatAmount < b.seatRangeEnd";
List classroom = getHibernateTemplate().find(hql);
if (classroom.size() > 0) {
return classroom;
}
return null;
}

/**
* 得到教学楼
*
* @return 教学楼
*/
public List findBuilding() {
String hql = "select distinct teachingBuilding as tb from Classroom ";
List building = getHibernateTemplate().find(hql);
if (building.size() > 0) {
return building;
}
return null;
}

/**
* 得到教学楼的所有教室
*/
public List findClassrooms(String building) {
String hql = "select a.pk, a.no, a.teachingBuilding, a.floor, a.seatAmount, b.classAmount, b.subjectAmount "
+ " from Classroom a,ExaminationRoomPlanRule b "
+ " where a.seatAmount >= b.seatRangeBegin and a.seatAmount <= b.seatRangeEnd and a.teachingBuilding = ?"
+ " order by b.classAmount desc,a.no ";
List classRooms = getHibernateTemplate().find(hql, building);

if (classRooms.size() > 0) {
return classRooms;
}
return null;
}

public void save(Classroom transientInstance) {
getHibernateTemplate().saveOrUpdate(transientInstance);
}

public Classroom query(String pk) {
String hql = " from Classroom where pk = ?";
List result = getHibernateTemplate().find(hql, pk);
if (result.size() > 0) {
return (Classroom) result.get(0);
}
return null;
}

public void del(String pk) {
try {
Classroom classroom = query(pk);
classroom.setIsntavile("N");
save(classroom);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

public List find(String conditions) {

String hql = " from Classroom where " + conditions;
List result = getHibernateTemplate().find(hql);
if (result.size() > 0) {
return result;
}
return null;
}

}

我写的一个比较简单的,可以参考一下。。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧