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注解方式映射
级联映射
posted @ 2018-01-26 21:05  品味Code  阅读(416)  评论(0编辑  收藏  举报