读书人

hibernate学习小结1

发布时间: 2013-01-01 14:04:19 作者: rapoo

hibernate学习总结1
[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 version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration>     <session-factory>     <!--配置方言 ,  告诉框架使用哪个数据库-->          <property name="dialect">               org.hibernate.dialect.MySQLDialect          </property>     <!--配置数据库连接用的参数-->          <property name="connection.url">               jdbc:mysql://localhost:3306/test          </property>          <property name="connection.username">….</property>          <property name="connection.password"> ….</property>          <property name="connection.driver_class">com.mysql.jdbc.Driver </property>          <!--myeclipse database explorer 中数据库连接的名字-->          <property name="myeclipse.connection.profile">mysql</property>          <!--配置映射文件-->          <mapping source="  ">     </session-factory></hibernate-configuration>



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


主键id的generator属性指定获得主键的方式, 常见的方式有:
identity:通过数据库的自增长方式获得主键, 需要在建立数据库时指定主键的增长方式为auto_increment.
increment:先从已有的id中找出最大值,select max(id) from tableName, 加1后执行insert操作.
assigned:忽略数据库自动生成、在代码中指定id
native:由框架自动选择
sequence:依据数据库的sequence对象获取id, 适用于Oracle. 使用这种增长方式时, 格式有些不同:
<generator name="code">     <mapping source="blog/pojo/Major.hbm.xml">


4.测试
测试代码见附件.

虽然手动配置很麻烦, 但在初学hibernate框架时应该要学会手动配置, 以熟悉配置文件.
(未完)
[/size] 1 楼 至尊宝_唯一 昨天 好像有错别字,是ORM吧。。。 2 楼 KeepCrazy 昨天 真错了, 已经改过来了, 谢谢啦! 3 楼 KeepCrazy 昨天 上次上传的附件有错误, 已经重新上传了

读书人网 >行业软件

热点推荐