注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 开源技术 >> Hibernate >> Java正文

JSF和Hibernate的比较

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-6-28 20:35:39 【 】 【加入收藏

    at backing bean:

    List list= new ArrayList();

    for(int i=0;i<10;i++){

    Object[] obj=new Object[2];

    User user =new User();

    obj[0] =user;

    Group group =new Group();

    obj[1]= group;

 

    list.add(obj);

    }

    at jsp

    <t:datatable value="#{xxxBean.getList}"  var="obj">

         <t:column =#{obj.user.username}/>

         <t:column=#{obj.group.groupname}/>

    </t:datatable>

    为什么要提到这个呢?是因为,hibernate的nativeSQL 可以查询多多个对象数组,当你遇到到复杂逻辑,需要自己定义sql去连接查询多张表。

    public List getJobSectionAndOutworkPoByHeaderId(Integer headerId)
{
         StringBuffer hql = new StringBuffer("select {j.*},{p.*} from (select * from est_job_section where header_id=").append(headerId);
         hql.append(") j left join est_outwork_po p on j.job_section_id =p.job_section_id");
         Query query = getSession().createSQLQuery(hql.toString()).addEntity("j",EstJobSection.class).addEntity("p",EstOutworkPo.class);
         List list = query.list();
         return list;
     }
    上面的这个方法查询出来的对象就是一个对象类型的数组存放在List里面。无需转换,可以直接在页面上显示。

    非常之方便。

    2.关于hibernate的另外一个属性inverse at mapping file,在处理mapping时候的one-to-many的时候,有时候我们往子表里插入一条记录,hibernate会自作多情地帮我们改动数据库里地数据,比如说,我们从student表里,查询一条出来,然后往数据库里再插入一条,相当于copy一条,我们希望这个student地groupid不要发生变化,但是假如我们不在主表group里设定inverse地话,当我们插入一条新组,新学生,但是这个学生信息和组信息都是从数据库里copy出来,而不是用户在界面上填写的(某项目的特别的需求),这样就会在copy 组的时候没有问题,而在copy学生的时候会把源学生的groupid改掉---自动改掉,粗略地估计是因为在session of hibernate里有两份reference,借助spring地transation的管理机制,不能释放所以,源数据就被同步掉了。:

    这样的情况下。可以通过在主表 Group表里设定一个inverse=true来通知子表,不要做任何的变动。

    <set name="estEstimationHeaders" inverse="true" lazy="false">
             <key>
                 <column name="est_base_id" />
             </key>
             <one-to-many class="com.vizia.app.bo.EstEstimationHeader" />
         </set>

 

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     手机开发平台指南、教程和资料介绍
     关于什么叫面向接口编程
     编写高级JavaScript应用代码
     不要验证,直接转化科学计数法
     Eclipse插件开发中实现刷新和重编译介绍
     Java开源技术:Eclipse的使用技巧详解
     配置eclipse 3.2 使用JDK1.5中文JavaAPI
     集成Windows本地应用到Eclipse RCP 程序中
     hibernate.cfg.xml配置文件的说明
     eclipse开发jface时,main.class解决方法
    最 新 推 荐
     从Hibernate的映射谈编程思想
     JSF和Hibernate的比较
     hibernate的核心接口
     利用ThreadLocal绑定Hibernate的session
     Struts2 Spring Hibernate 的简单整合
     在Hibernate中创建安全Session
     hibernate在sql server下分页的处理
     hibernate3二级缓存的配置及测试
     Hibernate一对多双向映射及乐观锁使用
     Java开发中关于Hibernate对多表关联查询
    相 关 文 章

    关于JSP与XML的交互
    JSP和Servlet的关系浅谈
    js 滚动图片新闻效果
    效率比较高的jsp分页程序
    JSP高访问量下的计数程序
    基于WCF和MSMQ构建发布/订阅消息总线
    JSF下Email验证器完全实例
    JSF Tour 5 MyFaces Intro
    GlassFish v3实现Rails和javaEE的整合
    JSP、Java实现选择框多级连动

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用