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>
<?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>
<generator name="code"> <mapping source="blog/pojo/Major.hbm.xml">