浏览 2810 次
|
锁定老贴子 主题:有关DAO的设计问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2004-07-02
本人接触三层结构开发时间不长,对于DAO方面有一些想法,也不知道对错,大家不妨讨论讨论。
按照我的理解,DAO介于持久层和业务逻辑层的中间,它的主要任务是封装对于数据库的基本操作(主要是四种基本操作)。对于现在,大家已经逐渐开始喜欢用Hibernate。DAO如果依然存在,那么它也应该封装数据库的基本操作。我曾经看了一些有关DAO的帖子,他们都提供了一些方法。但是就这些解决方案来看,我对此提出一些个人的见解和问题: 1、我曾经看见某位大侠对于数据库操作的封装的建议是:在业务逻辑层应该不含有任何的hibernate操作。我不知道这种说法是否正确,但是我觉得这应该是一种值得提倡的做法。在这种情况下,问题也就来了,如果在业务逻辑层不含有任何hibernate操作,那么类似于“模糊查找”或者说非常复杂的一些条件查询是不是就要放到DAO里面去了?这样的话,DAO不仅庞大,而且标准非常不明确,原本我认为DAO里面应该只有4种很基本的方法,但是如果加了这些复杂的操作,DAO就变得难以控制,因为我不知道业务逻辑需要我写什么样得DAO。 2、我目前写DAO的方法是这样的,我个人认为,DAO中的“增”、“删”、“改”三种操作对于每一个特定的表来说都是一致的。所以我把他们写成一个基类,这个基类的输入参数是Object类型的,对于每一个pojo类,直接调用这个基类的函数都能够顺利进行。至于“查”操作,由于我觉得查询的条件必须根据业务逻辑,所以对于查询操作,我是比较困惑的,不知道如何解决这个问题。 3、我在看很多其他人在写DAO的时候,并不考虑一些检验的情况。比如,我们往往会遇到一种情况:在往数据库里面插入一条记录的时候,主键是id(递增)永远不会重复,但是我们同样不希望有重复的名字name。一句简单的save语句应该是可以顺利插入数据库的,而并没有检验name的重复性。我的问题是,对于这些检验的操作,是由业务逻辑层的代码来完成,还是由DAO的操作来完成呢? 以上是我的一些问题和看法,希望大家踊跃批评,积极讨论。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2004-07-03
downpour 写道 本人接触三层结构开发时间不长,对于DAO方面有一些想法,也不知道对错,大家不妨讨论讨论。
按照我的理解,DAO介于持久层和业务逻辑层的中间,它的主要任务是封装对于数据库的基本操作(主要是四种基本操作)。对于现在,大家已经逐渐开始喜欢用Hibernate。DAO如果依然存在,那么它也应该封装数据库的基本操作。我曾经看了一些有关DAO的帖子,他们都提供了一些方法。但是就这些解决方案来看,我对此提出一些个人的见解和问题: 1、我曾经看见某位大侠对于数据库操作的封装的建议是:在业务逻辑层应该不含有任何的hibernate操作。我不知道这种说法是否正确,但是我觉得这应该是一种值得提倡的做法。在这种情况下,问题也就来了,如果在业务逻辑层不含有任何hibernate操作,那么类似于“模糊查找”或者说非常复杂的一些条件查询是不是就要放到DAO里面去了?这样的话,DAO不仅庞大,而且标准非常不明确,原本我认为DAO里面应该只有4种很基本的方法,但是如果加了这些复杂的操作,DAO就变得难以控制,因为我不知道业务逻辑需要我写什么样得DAO。 2、我目前写DAO的方法是这样的,我个人认为,DAO中的“增”、“删”、“改”三种操作对于每一个特定的表来说都是一致的。所以我把他们写成一个基类,这个基类的输入参数是Object类型的,对于每一个pojo类,直接调用这个基类的函数都能够顺利进行。至于“查”操作,由于我觉得查询的条件必须根据业务逻辑,所以对于查询操作,我是比较困惑的,不知道如何解决这个问题。 3、我在看很多其他人在写DAO的时候,并不考虑一些检验的情况。比如,我们往往会遇到一种情况:在往数据库里面插入一条记录的时候,主键是id(递增)永远不会重复,但是我们同样不希望有重复的名字name。一句简单的save语句应该是可以顺利插入数据库的,而并没有检验name的重复性。我的问题是,对于这些检验的操作,是由业务逻辑层的代码来完成,还是由DAO的操作来完成呢? 以上是我的一些问题和看法,希望大家踊跃批评,积极讨论。 :D 一个好的DAO类层次应该基于接口,接口的设计特定于你的应用,比如一些模糊查询等等,你可以在接口上构造这种特殊的查询方法。 特定的实现在你的DAO实现类,请记住一点,如果你的客户需要这种查询,ok,那么就实现它,如果这只是你的考虑,ok,请去掉它。 |
|
| 返回顶楼 | |
|
时间:2004-07-03
spring framework 中validation被整合在controller在层
dao方法应该根据业务需要出发,但有一致的命名规则也非常重要,将crud将将抽象为接口或基类,这是通常的做法,但查询应该根据需求而定,一个传入where或sql语句的dao函数我想是需要避免的 |
|
| 返回顶楼 | |
|
时间:2004-07-04
jjx 写道 一个传入where或sql语句的dao函数我想是需要避免的
to avoid? but i want 2 know how to solve it? |
|
| 返回顶楼 | |
|
时间:2004-07-04
我做的DAO封装了一般数据库的操作.当然虽然这很复杂了,仍然是不能满足特定的程序需要的. 所以我用工厂模式来做这个DAO. 当需要有扩展时,用类的"适配器"模式来扩充这个基本的DAO. 在新的接口中,只保留需要的DAO方法,以减少他的表现出来的复杂程度,下面贴一个DAO代码! 为了以后开发程序少写代码,已经在这个DAO中加入了一些假设需要到的操作
package com.yours.admin.dao; import java.util.List; import java.util.Iterator; import net.sf.hibernate.Hibernate; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Transaction; import net.sf.hibernate.Query; import net.sf.hibernate.Session; import com.yours.admin.jdo.Companyability; import com.yours.datamodel.hibernate.HibernateUtil; /** * <p>Title: DAO</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author 段洪杰 * @version 1.0 */ public class CompanyabilityDAOImpl implements CompanyabilityDAO{ /** * 增加记录 * @param companyability Companyability */ public void setCompanyability(Companyability companyability) throws Exception { Transaction tx = null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { tx = session.beginTransaction(); session.save(companyability); tx.commit(); } catch (Exception e) { if (tx!=null) tx.rollback(); throw e; } finally { //session.close(); } } /** * 通过ID取得记录 * @param id String * @return Companyability */ public Companyability getCompanyabilityById(String id) throws Exception { Companyability companyability = null; Transaction tx = null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { companyability=(Companyability)session.load(Companyability.class, id); } catch (Exception e) { throw e; } finally { //session.close(); } return companyability; } /** * 修改记录 * @param Companyability companyability */ public void modifyCompanyability(Companyability companyability) throws Exception { Transaction tx = null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { tx = session.beginTransaction(); session.update(companyability); tx.commit(); } catch (Exception e) { if (tx!=null) tx.rollback(); throw e; } finally { //session.close(); } } /** * 删除记录 * @param Companyability companyability */ public void removeCompanyability(Companyability companyability) throws Exception { Transaction tx = null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { tx = session.beginTransaction(); session.delete(companyability); tx.commit(); } catch (Exception e) { if (tx!=null) tx.rollback(); throw e; } finally { //session.close(); } } //////////////////////////////////////////////////////// ///// /// /////以下部份不带审核功能 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数 * @return int */ public int getCompanyabilitysCount() throws Exception { int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 取所有记录集合 * @return Iterator */ public Iterator getAllCompanyabilitys() throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取记录集合 * @return Iterator * @param int position, int length */ public Iterator getCompanyabilitys(int position, int length) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取第一条记录 * @throws Exception * @return Station */ public Companyability getFirstCompanyability()throws Exception{ Iterator iterator=null; Companyability companyability=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()) companyability=(Companyability)iterator.next(); } catch (Exception e) { throw e; } finally { //session.close(); } return companyability; } /** * 取最后一条记录 * @throws Exception * @return Station */ public Companyability getLastCompanyability()throws Exception{ Iterator iterator=null; Companyability companyability=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability order by companyability.id asc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()) companyability=(Companyability)iterator.next(); } catch (Exception e) { throw e; } finally { //session.close(); } return companyability; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能正确运行 查询部份 /// ///// /// /////////////////////////////////////////////////////// /** * 取符合条件记录总数, 模糊查询条件.[表中要有 title 字段] * @return int * @param String text */ public int getCompanyabilitysCount(String text) throws Exception { int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 取所有符合条件记录集合, 模糊查询条件.[表中要有 title 字段] * @return Iterator * @param String text */ public Iterator getAllCompanyabilitys(String text) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录集合, 模糊查询条件.[表中要有 title 字段] * @return Iterator * @param String text,int position, int length */ public Iterator getCompanyabilitys(String text, int position, int length) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能正确运行 注册相关 /// ///// /// //////////////////////////////////////////////////////// /** * 取符合条件记录总数.[ 表中要有 registername 字段] * @return int * @param String text */ public int getCompanyabilitysCountByRegisterName(String registerName) throws Exception { int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.registername = '"+registerName+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过注册名取得一条记录,如有多条,只取第一条.[表中要有 registername字段] * @param registername String * @return Companyability */ public Companyability getCompanyabilityByRegisterName(String registerName) throws Exception { Iterator iterator=null; Companyability companyability=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.registername='"+registerName+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()) companyability=(Companyability)iterator.next(); } catch (Exception e) { throw e; } finally { //session.close(); } return companyability; } /** * 通过注册名取得所有记录集合.[表中要有 registername字段] * @param registername String * @return Iterator */ public Iterator getAllCompanyabilitysByRegisterName(String registerName) throws Exception{ Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.registername='"+registerName+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过注册名取得记录列表.[表中要有 registername字段] * @param registername String * @return Iterator */ public Iterator getCompanyabilitysByRegisterName(String registerName,int position, int length) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.registername='"+registerName+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能正确运行 一级版块 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数.[ 表中要有 board 字段] * @return int * @param String board */ public int getCompanyabilitysCountByBoard(String board) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.board = '"+board+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得所有记录集合.[表中要有 board字段] * @param Board String * @return Iterator */ public Iterator getAllCompanyabilitysByBoard(String board) throws Exception { Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.board='"+board+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过版块名取得记录列表.[表中要有 board字段] * @param Board String * @return Iterator */ public Iterator getCompanyabilitysByBoard(String board,int position, int length) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.board='"+board+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录总数.[ 表中要有 board 字段,title] 模糊查询title * @return int * @param String board ,String text */ public int getCompanyabilitysCountByBoard(String board,String text) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.board='"+board+"' and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得记录列表.[表中要有 board字段] 模糊查询title * @param String board,int position, int length * @return Iterator */ public Iterator getCompanyabilitysByBoard(String board,int position, int length,String text) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.board='"+board+"' and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能正确运行 二级版块 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数.[ 表中要有 board board1 字段] * @return int * @param String board1,String board */ public int getCompanyabilitysCountByBoard1(String board1,String board) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.board1 = '"+board1+"' and companyability.board = '"+board+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得所有记录集合.[表中要有 board board1 字段] * @param Board String,String board1 * @return Iterator */ public Iterator getAllCompanyabilitysByBoard1(String board1,String board) throws Exception { Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过版块名取得记录列表.[表中要有 board board1 字段] * @param Board1 String,String board * @return Iterator */ public Iterator getCompanyabilitysByBoard1(String board1,String board,int position, int length) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录总数.[ 表中要有 board board1 字段,title] 模糊查询title * @return int * @param String board1,String board ,String text */ public int getCompanyabilitysCountByBoard1(String board1,String board,String text) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得记录列表.[表中要有 board board1 字段] 模糊查询title * @param String board1,String board,int position, int length * @return Iterator */ public Iterator getCompanyabilitysByBoard1(String board1,String board,int position, int length,String text) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能正确运行 三级版块 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数.[ 表中要有 board2 board1 board字段] * @return int * @param String board2,String board1,String board */ public int getCompanyabilitysCountByBoard2(String board2,String board1,String board) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.board2 = '"+board2+"' and companyability.board1 = '"+board1+"' and companyability.board = '"+board+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得所有记录集合.[表中要有 board2 board1 board字段] * @param Board String,String board1 * @return Iterator */ public Iterator getAllCompanyabilitysByBoard2(String board2,String board1,String board) throws Exception { Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过版块名取得记录列表.[表中要有 board2 board1 board字段] * @param Board1 String,String board * @return Iterator */ public Iterator getCompanyabilitysByBoard2(String board2,String board1,String board,int position, int length) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录总数.[ 表中要有 board2 board1 board字段,title] 模糊查询title * @return int * @param String board2,String board1,String board ,String text */ public int getCompanyabilitysCountByBoard2(String board2,String board1,String board,String text) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得记录列表.[表中要有 board2 board1 board字段] 模糊查询title * @param String board2,String board1,String board,int position, int length * @return Iterator */ public Iterator getCompanyabilitysByBoard2(String board2,String board1,String board,int position, int length,String text) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// /////以下部份带有审核功能 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数 * @return int * @param int isAuditing */ public int getCompanyabilitysCount(int isAuditing) throws Exception { int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing).next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 取所有记录集合 * @return Iterator * @param int position, int length,int isAuditing */ public Iterator getAllCompanyabilitys(int isAuditing) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取记录集合 * @return Iterator * @param int position, int length,int isAuditing */ public Iterator getCompanyabilitys(int position, int length,int isAuditing) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 要有特定字段才能正确运行 有审核功能 查询部份 /// ///// /// /////////////////////////////////////////////////////// /** * 取符合条件记录总数, 模糊查询条件.[表中要有 title 字段] * @return int * @param String text,int isAuditing */ public int getCompanyabilitysCount(String text,int isAuditing) throws Exception { int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 取所有符合条件记录集合, 模糊查询条件.[表中要有 title 字段] * @return Iterator * @param String text,int isAuditing */ public Iterator getAllCompanyabilitys(String text,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录集合, 模糊查询条件.[表中要有 title 字段] * @return Iterator * @param String text,int position, int length,int isAuditing */ public Iterator getCompanyabilitys(String text, int position, int length,int isAuditing) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 要有特定字段才能正确运行 有审核功能 注册相关 /// ///// /// //////////////////////////////////////////////////////// /** * 取符合条件记录总数.[ 表中要有 registername isauditing字段] * @return int * @param String text,int isAuditing */ public int getCompanyabilitysCountByRegisterName(String registerName,int isAuditing) throws Exception { int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.registername = '"+registerName+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过注册名取得一条记录,如有多条,只取第一条.[表中要有 registername isauditing字段] * @param registername String,int isAuditing * @return Companyability */ public Companyability getCompanyabilityByRegisterName(String registerName,int isAuditing) throws Exception { Iterator iterator=null; Companyability companyability=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.registername='"+registerName+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()) companyability=(Companyability)iterator.next(); } catch (Exception e) { throw e; } finally { //session.close(); } return companyability; } /** * 通过注册名取得所有记录集合.[表中要有 registername isauditing字段] * @param registername String,int isAuditing * @return Iterator */ public Iterator getAllCompanyabilitysByRegisterName(String registerName,int isAuditing) throws Exception{ Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.registername='"+registerName+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过注册名取得记录列表.[表中要有 registername isauditing字段] * @param registername String,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByRegisterName(String registerName,int position, int length,int isAuditing) throws Exception { Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.registername='"+registerName+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 要有特定字段才能正确运行 有审核功能 一级版块 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数.[ 表中要有 board isauditing字段] * @return int * @param String board,int isAuditing */ public int getCompanyabilitysCountByBoard(String board,int isAuditing) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board = '"+board+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得所有记录集合.[表中要有 board isauditing字段] * @param Board String,int isAuditing * @return Iterator */ public Iterator getAllCompanyabilitysByBoard(String board,int isAuditing) throws Exception { Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board='"+board+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过版块名取得记录列表.[表中要有 board isauditing字段] * @param Board String,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByBoard(String board,int position, int length,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board='"+board+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录总数.[ 表中要有 board isauditing字段,title] 模糊查询title * @return int * @param String board ,String text,int isAuditing */ public int getCompanyabilitysCountByBoard(String board,String text,int isAuditing) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board='"+board+"' and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得记录列表.[表中要有 board字段 isauditing] 模糊查询title * @param String board,int position, int length,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByBoard(String board,int position, int length,String text,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board='"+board+"' and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// /////要有特定字段才能正确运行 有审核功能 二级版块 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数.[ 表中要有 board board1 isauditing字段] * @return int * @param String board1,String board,int isAuditing */ public int getCompanyabilitysCountByBoard1(String board1,String board,int isAuditing) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board1 = '"+board1+"' and companyability.board = '"+board+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得所有记录集合.[表中要有 board board1 isauditing字段] * @param Board String,String board1,int isAuditing * @return Iterator */ public Iterator getAllCompanyabilitysByBoard1(String board1,String board,int isAuditing) throws Exception { Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过版块名取得记录列表.[表中要有 board board1 isauditing 字段] * @param Board1 String,String board,int position, int length,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByBoard1(String board1,String board,int position, int length,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录总数.[ 表中要有 board board1 isauditing字段,title] 模糊查询title * @return int * @param String board1,String board ,String text,int isAuditing */ public int getCompanyabilitysCountByBoard1(String board1,String board,String text,int isAuditing) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得记录列表.[表中要有 board board1 isauditing 字段] 模糊查询title * @param String board1,String board,int position, int length,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByBoard1(String board1,String board,int position, int length,String text,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } //////////////////////////////////////////////////////// ///// /// /////要有特定字段才能正确运行 有审核功能 三级版块 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录总数.[ 表中要有 board2 board1 board isauditing字段] * @return int * @param String board2,String board1,String board,int isAuditing */ public int getCompanyabilitysCountByBoard2(String board2,String board1,String board,int isAuditing) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board2 = '"+board2+"' and companyability.board1 = '"+board1+"' and companyability.board = '"+board+"'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得所有记录集合.[表中要有 board2 board1 board isauditing字段] * @param Board String,String board1,int isAuditing * @return Iterator */ public Iterator getAllCompanyabilitysByBoard2(String board2,String board1,String board,int isAuditing) throws Exception { Iterator iterator=null; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; try { //创建查询 Query query = session.createQuery(queryString); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 通过版块名取得记录列表.[表中要有 board2 board1 board isauditing字段] * @param Board1 String,String board,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByBoard2(String board2,String board1,String board,int position, int length,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } /** * 取符合条件记录总数.[ 表中要有 board2 board1 board isauditing字段,title] 模糊查询title * @return int * @param String board2,String board1,String board ,String text,int isAuditing */ public int getCompanyabilitysCountByBoard2(String board2,String board1,String board,String text,int isAuditing) throws Exception{ int count = 0; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { count = ( (Integer) session.iterate("select count(*) from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%'").next()).intValue(); } catch (Exception e) { throw e; } finally { //session.close(); } return count; } /** * 通过版块名取得记录列表.[表中要有 board2 board1 board isauditing字段] 模糊查询title * @param String board2,String board1,String board,int position, int length,int isAuditing * @return Iterator */ public Iterator getCompanyabilitysByBoard2(String board2,String board1,String board,int position, int length,String text,int isAuditing) throws Exception{ Iterator iterator=null; String queryString =" select companyability from Companyability as companyability where companyability.isauditing="+isAuditing+" and companyability.board2 = '"+board2+"' and companyability.board1='"+board1+"' and companyability.board='"+board+"' and companyability.title like '%"+text+"%' order by companyability.id desc"; Session session = HibernateUtil.currentSession(); //Session session = HibernateUtil.sessionFactory.openSession(); try { //创建查询 Query query = session.createQuery(queryString); //设置游标的起始点 query.setFirstResult(position); //设置游标的长度 query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入迭代器 iterator = list.iterator(); } catch (Exception e) { throw e; } finally { //session.close(); } return iterator; } } |
|
| 返回顶楼 | |
|
时间:2004-07-04
说实话,我个人觉得还不如传sql语句进去呢,至少DAO不用那么庞大,另外,我个人认为传入sql进去,至少DAO就可以于业务逻辑完全无关。按照楼上的写法,我是否可以认为:DAO是一个太不确定的东西,以至于开发业务逻辑的程序员和开发DAO的程序员必须事先协商接口?
我的主要问题是:为什么不采用接口统一?只有四个操作,“增”、“删”、“改”一致,“查”采用输入sql的办法? |
|
| 返回顶楼 | |
|
时间:2004-07-05
downpour 写道 说实话,我个人觉得还不如传sql语句进去呢,至少DAO不用那么庞大,另外,我个人认为传入sql进去,至少DAO就可以于业务逻辑完全无关。按照楼上的写法,我是否可以认为:DAO是一个太不确定的东西,以至于开发业务逻辑的程序员和开发DAO的程序员必须事先协商接口?
我的主要问题是:为什么不采用接口统一?只有四个操作,“增”、“删”、“改”一致,“查”采用输入sql的办法? 我曾经构思过一件查询条件放入MAP,传递MAP到DAO方法,自动生成查询HQL字串的方法,不过没试用过. 因为自已开发程序.如果每次都构思查询条件,做的多了也会出错, 不如把常用的加到DAO里,需要时把DAO复制一份,来成批修改一下字串值就可以成为新的DAO,反而快速和不易出错. |
|
| 返回顶楼 | |
|
时间:2004-07-05
我想过借鉴hibernat的criteria来构造查询,不过,那样感觉,要自己构造criterial和expression类,总感觉换汤不换药。
问一下,dhj1,你的DAO中的操作后,session关闭的语句注释掉了。请问,你打算什么时候关掉那个session? |
|
| 返回顶楼 | |
|
时间:2004-07-05
nesta 写道 我想过借鉴hibernat的criteria来构造查询,不过,那样感觉,要自己构造criterial和expression类,总感觉换汤不换药。
问一下,dhj1,你的DAO中的操作后,session关闭的语句注释掉了。请问,你打算什么时候关掉那个session? Filter !!!!! |
|
| 返回顶楼 | |
|
时间:2004-07-09
DAO方面有没有什么比较正规的标准?我是指从DAO的实现模式(例如:工厂模式),DAO的实现方法的一套类似框架的标准?
|
|
| 返回顶楼 | |












