Hibernate知识点总结
一、 Hibernate 1 Hibernate 简化JDBC (ORM) 使用Hibernate的步骤 1 将第三方包加入到项目当中 2 编写核心配置文件 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"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <!-- 配置方言 --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <!-- 配置连接地址 --> <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property> <!-- 配置用户名 --> <property name="connection.username">mart</property> <!-- 配置密码 --> <property name="connection.password">java</property> <!-- 配置驱动 --> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!-- 配置自动创建表 create 表示每次运行程序的时候,都自动创建表 update 表示对表的更新(没有表的时候,创建表,如果存在的时候,对原来表进行更新) 如果出现配置update第一次执行表无法创建的情况。先配置为create,第一次运行之后,再配置成update --> <property name="hbm2ddl.auto">update</property> <!-- 配置显示sql语句 --> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> 3 编写实体类 public class User implements Serializable{ private Integer id; //ID Hibernate要求每个实体都必须有一个主键 private String uname; private String gender; private Integer age; .... 省略get/set方法 } 4 编写实体类对应的映射文件 User.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 配置需要映射哪个类 通过name属性指定需要映射的类 通过table属性指定映射到数据库当中的表的名字(可以不写/默认和类的名字相同) --> <class name="com.zhaolong.bean.User" table="HUQB_USER"> <!-- 配置主键 通过name属性指定通过哪个属性配置主键 --> <id name="id"> <!-- 通过generator指定主键的生成策略 --> <generator class="sequence"> <!-- 通过param指定序列的名字 --> <param name="sequence">SEQ_HUQB_USER</param> </generator> </id> <!-- 配置其他属性 通过name属性指定需要映射的属性 通过column属性指定映射到数据库当中的列名(可以不写/默认和属性的名字相同) 可以在property标签当中通过其子标签 column配置列的详细信息 --> <property name="uname" column="HUQB_UNAME"/> <property name="gender"/> <property name="age"> <column name="HUQB_AGE" not-null="true"></column> </property> </class> </hibernate-mapping> 5 将实体类的映射文件,添加到核心配置文件当中 <?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"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> ...省略基础配置信息 <!-- 在核心配置文件当中加载实体的映射文件 --> <mapping resource="com/zhaolong/bean/User.hbm.xml"/> </session-factory> </hibernate-configuration> 6 使用Hibernate实现增删改查 //加载配置文件 Configuration cfg=new Configuration(); cfg.configure(); //创建SessionFactory SessionFactory fatory = cfg.buildSessionFactory(); //获取session Session session = fatory.openSession(); //打开事物 Transaction tx = session.beginTransaction(); //执行增删改查操作 User u=new User(); u.setUname("张三"); u.setGender("男"); u.setAge(22); session.save(u); //提交事务 tx.commit(); //关闭session session.close(); 2 Hibernate 表与表之间关系映射 1对多 1 java类当中要有一个Set属性 2 映射文件通过Set标签进行配置 多对1 1 java类当中要有一个关联需要的属性 2 映射文件当中通过<many-to-one>标签进行配置 1对1 1 java类当中要有一个关联需要的属性 2 映射文件当中通过<one-to-one>标签进行配置 映射文件当中通过<many-to-one unique=true> 指定唯一 多对多 1 java类当中要有一个Set属性 2 映射文件通过Set标签进行配置 注意:多对多映射会生成第三张映射表 3 Hibernate查询 1 HQL 基于对象的查询语言 将sql当中的表名修改成对象名 将sql当中列名修改成属性名 2 Criteria 面向对象的查询 Restrictions 添加限制条件 Projections 聚合查询 Projections.projectionList() 添加多个统计结果 3 DetachedCriteria 离线查询 4 Hibernate缓存 1 一级缓存 session 2 二级缓存 SessionFactory (需要配置) 3 查询缓存 5 其他信息 inverse cascade lazy
我从不相信什么懒洋洋的自由,
我向往的自由是通过勤奋和努力实现更广阔的人生,那样的自由才是珍贵的、有价值的。
我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。
做一个自由又自律的人,靠势必实现的决心认真地活着。
我向往的自由是通过勤奋和努力实现更广阔的人生,那样的自由才是珍贵的、有价值的。
我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。
做一个自由又自律的人,靠势必实现的决心认真地活着。
[山本耀司]
本文转载请注明出处