`
jakey0613
  • 浏览: 24379 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

自己的一些手记

    博客分类:
  • java
阅读更多


㈠使用Hibernate:

1.准备阶段:

1)      创建一个工程,然后先进入MyEclipse Database Explorer透视图,在DB Browser(数据库浏览器)视图中,new一个Database Driver,连接数据库。

2)      再加入Hibernate框架,其连接数据库的操作即可选择上述Database Driver的名字。

3)      在DB Browser(数据库浏览器)视图中,鼠标右键选择你要操作的表,在弹出的菜单中选择“Hibernate Reverse Engineering”(Hibernate反向工程),再根据它弹出的向导,一步一步,即可生成实体类和一个“实体类名.hbm.xml”这样的xml文件(映射文件),这个文件代表着实体类与数据库中表的绑定关系。

2.      完成持久化操作的七个步骤:

1)       读取并解析配置文件(hibernate.cfg.xml)

2)       读取并解析映射文件(实体类名.hbm.xml),创建SessionFactory。

3)       打开session。

4)       开启事务(查询操作不需要)。

5)       执行持久化方法。

6)       提交事务。

7)       关闭session。

注:前3个步骤已在准备阶段中生成的“HibernateSessionFactory.java”这个文件中做好了,一般我们只需获取session,再进行后4个操作即可。



㈡HQL和SQL查询数据的区别:

1.HQL:意思是Hibernate Query Language,即Hibernate查询语言,与SQL最大的区别就是它是面向对象。

语法:

Select  *  from 对象名  where  对象的属性=”条件”

注:利用HQL查询时,现可以把“select  *  ”省略不写。

2.      SQL:意思是Structor Query Language,即结构化查询语言,它是面向关系型。

语法:

         Select  *  from 表名  where  表中的字段=”条件”

         注:查询到的结果是一个二维的对象集合,如果要读取出来,要先对其进行转换成二维数组,再逐一读取出来。详情请参阅《java中常用的技术源代码》电子档

3.      HQL丰富查询:

1)       属性查询:hql语句中也可以直接像sql语句一样,但要注意是,查询的不是数据库中表的字段,而是实体类的属性,要与实体类中属性大小写一致.

2)       参数查询:一般sql语句中带参数查询时,用问号“?”来表示参数,再(设置带符串的参数)PreparedStatement.setString(从1开始的索引,参数值)hql语句中也可以像如上设置参数,不过参数索引是从0开始的,还可以用另外一种设置参数的方法,即对参数取别名,格式如:“:参数名”,然后通过名称逐个设置参数的值。

3)      关联查询:hql语句也可以按属性条件来查询。

4)      分页查询:利用Query.setFirstResult(pageSize*(pageNo-1));Query.setMaxResults(pageSize);pageNo:表示页码,pageSize:表示页面显示数据最大条数。

5)      统计函数:如:当我们需要知道总的数据条数时,hql=“select count(属性名) from 实体类名”;再用session获取Query,最后用Query.uniqueResult()获取再强制转换为整型。

4.      使用Criteria查询:针对的是有条件查询时,Session.createCriteria(实体类名)获取Criteria对象,然后用Criteria.add(Expression/Restrictions.方法(条件))。Criteria.addOrder(Order.asc或desc(条件))。

㈢Hibernate的关联映射:

1.      单向多对一关联的映射:只需在生成的映射文件中增加

<many-to-one name="多方类的属性名" class="一方类的类名" fetch="select" cascade="all">

<column name="多方类对应表的字段名" not-null="true/false" />

</many-to-one>

2.      单向一对多关联的映射:

<set name="一方类的属性名" inverse="false">

<key>

<column name="一方类对应表的字段名" not-null="true" />

</key>

<one-to-many class="多方类的类名" />

</set>

注:1)inverse:表示反转属性,true表示由对方管理双方的关联关系,为false进,表示自己管理双方的关联关系,一般情况下,设为true,由多的一方管理一对多的关联关系。

    2)cascade:表示级联更新,可选的值包括:all,对所有的操作都进行级联;none,对所有的操作都不进行级联;save-update,执行更新操作时级联;delete,执行删除操作时级联。

    两个属性配合使用,当在一方使用反转属性(inverse),则在多方使用cascade属性,反之亦可。当使用了Hibernate反射工程,如果两表存在主外键关系,便自动生成以上代码。

3.      双向一对多关联的映射:如果同时配置使用了1,2,就成了双向一对多关联。

4.      多对多关联的映射:

注:1).在多对多关联映射中,在用反向工程时,注意不要选择关系表,只需选择实体类表,其关系将由它们自己去找。

其中一张表映射文件配置:

<set name="表名" table="关系表" schema="dbo" catalog="数据库名">

<key>

    <column name="关系表中的字段名" />

</key>

<many-to-many entity-name="实体类名">

    <column name="实体类中的属性" />

</many-to-many>

</set>

另一张表的映射文件配置:

<set name="另一张表名" inverse="false" table="关系表" schema="dbo" catalog="数据库名" cascade="all">

      <key>

          <column name="关系表中的字段名" />

      </key>

      <many-to-many entity-name="另一实体类名">

          <column name="该实体类的属性" />

      </many-to-many>

</set>

    2).实现排序:在实体映射信息文件中,将<set>节点改为<bag>标签,在<bag>中加一个属性order-by=”属性名” ,并将实体类中的set集合改为List集合。
分享到:
评论

相关推荐

    匠人手记(全集)(共包括24篇)part1

    除此之外,《匠人手记》还可能包含了一些实战案例,通过实际项目的介绍,让读者了解如何将理论知识应用到实践中,提升解决实际问题的能力。这些案例可能涵盖了从简单的小型控制系统到复杂的嵌入式系统设计。 总的来...

    《匠人手记》11《按键漫谈》

    《匠人手记》11《按键漫谈》一文由程序匠人撰写,深入探讨了按键处理在单片机编程中的重要性及其基础技术。文章不仅为新手提供了入门指导,同时也涵盖了按键处理中的一些高级概念和技术细节。 ### 按键时序分析 ...

    Symbian S60 手记软件源码

     经常会有随手记录一些事情的习惯,可是手机自带的日历用得不够方便,于是想按照自己的使用习惯来开发一个程序,取名“手记”,随想随记! 功能列表:  手记增删查改及持久化 附件源码,情枫版权,侵权不究! ...

    【MATLAB GUI设计学习手记】源代码.rar

    以下是一些关于MATLAB GUI设计的重要知识点: 1. **组件库**:在GUIDE中,你可以找到各种组件,如按钮、文本框、滑块、菜单等,它们是构建GUI的基础元素。 2. **回调函数**:当用户与GUI组件交互时,比如点击按钮...

    匠人手记:一个单片机工作者的实践与思考 20181128

    书中可能讲解了如何使用C语言进行单片机编程,并介绍了一些常用的开发环境,如Keil、IAR或GCC等,以及如何使用它们进行代码编写、编译和调试。 此外,单片机的应用实例是学习过程中的宝贵资源。作者可能会分享他在...

    匠人的手记

    最后,匠人手记可能会探讨一些软技能,如如何有效地学习新的硬件或软件技术,如何与团队协作,以及如何持续改进自己的工作流程。这些软技能对于任何工程师的成长都是至关重要的。 总的来说,“匠人的手记”是一个...

    Fedora 15安装实战手记

    为了提升Fedora系统的网络功能,可以安装一些插件来增强使用体验。例如,fastestmirror插件能够让yum包管理器自动检测并使用最快源来下载软件包,而yum-presto插件则能够加速下载过程。这些插件的安装通过简单的yum...

    iBATIS 3 试用手记三

    在《iBATIS 3 试用手记三》中,作者可能还会分享一些实战经验,如如何解决常见的问题,如何优化性能,以及如何利用iBATIS 3的高级特性进行复杂业务的处理。通过对iBATIS 3的深入学习和实践,开发者可以提升自己的...

    MATLAB GUI设计学习手记第2版(上)

    在"MATLAB GUI设计学习手记第2版"中,作者深入浅出地介绍了如何利用MATLAB构建自己的用户界面。 首先,MATLAB GUI设计的核心在于 GUIDE(Graphical User Interface Development Environment),这是一个可视化工具...

    感受Linux桌面魔力:Mandrake9.0试用手记.pdf

    该版本的发布,是在Red Hat之后,但它试图打破传统的束缚,塑造自己独特的品牌形象,这一点从发布时间上的安排便可见一斑。 在个人使用体验方面,作者在手记中回顾了Mandrake Linux 8.0给他们带来的深刻印象,并对...

    信号完整性揭秘 于博士SI设计手记 352ҳ 83.0M 高清书签版-综合文档

    《信号完整性揭秘——于博士SI设计手记》是一本深入探讨信号完整性的专业书籍,适合电子工程师、硬件设计师以及对高速数字系统感兴趣的读者。信号完整性是现代电子设计中不可或缺的一个重要概念,它涉及到如何在高速...

    匠人手记:一个单片机工作者的实践与思考

    本书的作者通过自己的实践经验和深入思考,为我们揭示了单片机设计与应用的诸多奥秘。以下是基于标题和描述中涉及的知识点的详细解读: 1. **基础知识**:书中可能会涵盖单片机的基本组成,包括CPU、内存、I/O端口...

    中国cmm实施手记

    企业评估概况 截止2002年2月5日,中国软件企业通过cmm评估的基本情况如下: 东软cmm手记 实施原因: 国内东软从1991年开始,从事国际业务和外包业务,1997年开始介入外方核心业务的开发。1999年底,在东软给日方...

    匠人手记》网络版《STM32开发经验》系列《ISP程序升级时让STM32自己控制BOOT口电平

    - 利用芯片自己的GPIO口方法则无需额外硬件支持,是一种成本低且便于实现自动化的方案,适合于一些需要频繁升级的应用场景。 掌握这些技术点,可以让开发人员在面对产品固件升级需求时有更多的解决方案可供选择,...

    Wicket 1.4 开发手记(一) helloworld与环境配置

    在《Wicket 1.4 开发手记》系列的第一篇文章中,作者Steel.Ma分享了他对Wicket框架的一些见解,特别是针对Wicket 1.4版本的入门级介绍。文章首先对当前流行的开发模式SSH(Struts、Spring、Hibernate)进行了批判性的...

    【鸟哥笔记】营销增长实战手记小绿书.pdf

    企业需要根据自己的产品特性和目标市场的特点选择合适的营销渠道。 4. 用户洞察与行为分析:营销增长的实战中,用户洞察是一个重要环节。企业需要通过市场调研、用户访谈、数据分析等手段深入理解用户需求、消费...

    Oracle.DBA手记2.数据库诊断案例与内部恢复实践

    《Oracle DBA手记2:数据库诊断案例与内部恢复实践》是一本专注于Oracle数据库管理和故障排除的专业书籍。作为DBA(数据库管理员),掌握数据库的诊断和恢复技术是至关重要的,因为这直接影响到系统的稳定性和数据的...

Global site tag (gtag.js) - Google Analytics