• hibernate入门


    [size=large]

    什么是hibernate?
    hibernate是一个基于ORM(实体关系映射)的、用于简化数据库操作的框架。

    为什么要使用hibernate?
    传统的jdbc操作具有以 下缺点:
    1.在Java代码中写sql语句麻烦, 特别是遇到多表查询时;
    2.手动映射非常麻烦(stat.setInteger(...)...),特别是当属性较多时;
    3.jdbc的移植性不好,比如分页查询,Oracle和MySQL的就不同。
    hibernate内部封装了jdbc,它的hql和session大简化了数据操作, 并且去除了对不同的数据库操作在代码层面上的差异, 有很好的可移植性.


    最基本的使用
    在hibernate中,几乎所有的数据操作都基于实体关系映射, 即建立数据表格和实体类之间的映射关系, 通俗的讲, 就是根据表格建立实体类或根据实体类建立表格.而在hibernate的映射方式包含基本映射, 一对多映射, 多对多映射, 组件映射 和联合主键映射等. 这些映射关系可以手动配置, 也可以用myeclipse自动生成。作为初学者, 我感觉应在熟悉手动配置后再使用自动生成。

    本文配有附件, 以专业、学生、课程和学生选课四个表配合文章说明. jar包有点多, 没上传.
    先介绍手动配置基本映射的方式.
    基本映射, 一个表格对应一个实体类, 实体类的属性对应于表格各字段, 是建立其它映射关系的基础.建立步骤如下.
    1.在src下添加hibernate.cfg.xml文件,配置数据库连接参数.
    Xml代码 复制代码 收藏代码
    1. <?xml version='1.0' encoding='UTF-8'?>
    2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    4. <hibernate-configuration>
    5. <session-factory>
    6. <!--配置方言 , 告诉框架使用哪个数据库-->
    7. <property name="dialect">
    8. org.hibernate.dialect.MySQLDialect
    9. </property>
    10. <!--配置数据库连接用的参数-->
    11. <property name="connection.url">
    12. jdbc:mysql://localhost:3306/test
    13. </property>
    14. <property name="connection.username">….</property>
    15. <property name="connection.password"> ….</property>
    16. <property name="connection.driver_class">com.mysql.jdbc.Driver </property>
    17. <!--myeclipse database explorer 中数据库连接的名字-->
    18. <property name="myeclipse.connection.profile">mysql</property>
    19. <!--配置映射文件-->
    20. <mapping source=" ">
    21. </session-factory>
    22. </hibernate-configuration>



    2.参照需要被映射的表格添加实体类(和想用jdbc建立实体类的方法相同),并为其建立映射文件。每个通过表格得到的映射实体类都有自己独立的映射文件:entityName.hbm.xml, 如Major.hbm.xml.
    Xml代码 复制代码 收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    4. <hibernate-mapping>
    5. <class name="含有包名的类名, 如pojo.Major" table="对应的表名">
    6. <!--主键-->
    7. <id name="id" type="integer">
    8. <column name="id" />
    9. <generator class="identity"></generator>
    10. </id>
    11. <!--属性-->
    12. <property name="属性名" type="包含包名的Java数据类型, 或hibernate数据类型">
    13. <column name="列名"/>
    14. </property>
    15. <property name="属性名" type="包含包名的Java数据类型, 或hibernate数据类型">
    16. <column name="列名"/>
    17. </property>
    18. </class>
    19. </hibernate-mapping>

  • 相关阅读:
    Oozie时bin/oozied.sh start或bin/oozied.sh run出现Bootstrap进程无法启动,http://bigdatamaster:11000/oozie界面也无法打开?
    [ACM] POJ 2253 Frogger (最短路径变形,每条通路中的最长边的最小值)
    Echoprint系列--Android编译与调用
    shell编程之文本与日志过滤
    C++中搜索、截取字符串
    Swift中的UIKit重力学
    hbase0.96 put流程 源码分析
    [Docker]初次接触
    工作日志2014-08-25
    Flex和Servlet结合上传文件报错(二)
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3575967.html
Copyright © 2020-2023  润新知