zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    A. Dawid and Bags of Candies ( Codeforces Round #588 (Div. 2) )
    B. Ania and Minimizing (Codeforces Round #588 (Div. 2) )
    残缺的棋盘 (BFS)
    Max Sum (动态规划)
    高桥和低桥 (离散化 )
    White Sheet (矩形面积模板) (Codeforces Round #587 (Div. 3) )
    Catch That Cow (BFS luo搜 + 剪枝)
    Python笔记-字符串
    关于拖延症
    一些告诫
  • 原文地址:https://www.cnblogs.com/hackxiyu/p/7076285.html
Copyright © 2011-2022 走看看