zoukankan      html  css  js  c++  java
  • Hibenate配置篇

    ORM:对象关系模型
    jdbc://127.0.0.1:3306/ssh
     
    执行步骤:
    1. Configuration:管理hibernate,负责hibernate配置工作,包括hibernate运行时需要的信息。
    2. SessionFactory:用来根据配置好的Configuration创建数据库连接。(相当于Connection)
    3. Session:数据库连接
    Hibernate废除了buildSessionFactory,新增了一个接口ServiceRegistry。基于hibernate的配置或服务都必须统一向ServiceRegistry注册后才能生效,所以hibernate配置入口不再是Configuration对象,而是ServiceRegistry对象。
     
    Hibernate配置文件中设置属性
    • show_sql:true  显示sql执行语句。
    • format_sql:true  按照格式化显示sql。
    • hbm2ddl.auto (取值如下)
      • create  每次启动hibernate都会删除上一次的表,然后重新生成新表。
      • create-drop  每次启动hibernate都会删除上一次的表,然后重新生成新表,当SessionFactory关闭时,表自动删除。
      • validate  (默认值)加载时验证表的机构,不会创建。
    Hibernate主键映射机制
    • assigned:插入数据时由用户直接录入;
    • identity:对SQL Service和MySQL支持自动增长列,不支持Oracle;
    • sequence:只针对Oracle,主键设为序列;
    • native:由hibernate根据底层数据库自行判断采用identity还是sequence;
    • increment:用于SQL Service或MySQL数据库中未把表主键设为自增,而又想实现自增的效果,对long、int、short类型适用;
    •  uuid.hex:采用uuid算法生成主键,编码产生一个32位16进制数字的字符串,占用空间大,适用与varchar类型。
    Hibernate操作接口(增删改查方法)
    • 查询
      • session.get(class, id); 直接查询
      • session.load(class, id); 懒加载
        • 两者区别:
        1. 执行load时不会查询数据库,只有出现使用时才查询数据库。例如stu.getStuname()执行时才查询;
        2. get查询结果不存在时,返回null,
          load查询结果不存在时,报异常;
        3. load方法返回实体的代理类,
          get方法返回实体类;
    • 新增
      • session.save(对象名);
    • 修改
      • session.update(对象名);
    • 新增或修改
      • session.saveOrUpdate(对象名);
    • 删除
      • session.delete(对象名);
    HQL查询
    • 原生sql的表对应hql中的类;
    • 原生sql的列名对应hql中类的属性名;
    对于复杂sql,比如两张表以上的关联查询或是聚合分组查询,建议把sql查询创建视图,对视图进行hibernate映射。
    QBC查询(Query By Criteria)
       使用Criteria对象 Criteria criteria = session.createCriteria(Stu.class);
    • Restrictions
      • Restrictions.like  模糊查询
      • MatchMode.END  以当前值为结尾
      • MatchMode.START  以当前值为开头
      • MatchMode.ANYWHERE  包含当前值
      • MatchMode.EXACT  精确查询
    • between ... and
      • Restrictions.between(列名,开始值,结束值)
    • 比较运算
      • Restrictions.eq()  等于
      • Restrictions.le()  小于等于
      • Restrictions.ge()  大于等于
      • Restrictions.lt()  小于
      • Restrictions.gt()  大于
      • Restrictions.ne()  不等于
    • 排序
      • criteria.add(Order.asc("score"));  //按成绩升序排列
      • criteria.add(Order.desc("score"));  //按成绩降序排列
    • and 和 or
      • criteria.add(Restrictions.and(Restrictions.eq("stuname","张三"), Restrictions.ge("score", 80f)));
    Hibernate注解方式映射
    级联映射
  • 相关阅读:
    P3121 [USACO15FEB]审查(黄金)Censoring (Gold)
    P3389 【模板】高斯消元法
    P2260 [清华集训2012]模积和
    【Codevs1237&网络流24题】餐巾计划(费用流)
    【POJ3680】Intervals(费用流)
    【BZOJ1070】修车(费用流)
    【BZOJ1834】network 网络扩容(最大流,费用流)
    【POJ1149&BZOJ1280】PIGS(最大流)
    【BZOJ2127】happiness(最小割)
    【BZOJ3894】文理分科(最小割)
  • 原文地址:https://www.cnblogs.com/wq-code/p/8361616.html
Copyright © 2011-2022 走看看