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>

原文地址:https://www.cnblogs.com/bjanzhuo/p/3575967.html