hibernate第五天

来源:互联网 发布:淘宝百信大药房旗舰店 编辑:程序博客网 时间:2024/05/21 19:27

id生成策略:
 oracle:
  sequence
  increment
  hilo
  seqhilo
  uuid.hex
  native
  assigned
  foreign
 mysql:
  identity
  increment
  hilo
  uuid.hex
  native
  assigned
  foreign
hql:
 【select 类别名】from 类名 类别名;
 from 类名 类别名 inner join|left outer join 类别名.关系属性名;
 --->Query.list():List ls
 集合中存储的是封装好的类对象

 select 类别名.属性名... from 类名 类别名;
 --->Query.list():List ls
 集合中存储的是多个Object[],每个数组代表一行记录

 select new 新类名(类别名.属性名...) from 类名 类别名;
 --->新类需要手动创建,并且指定类路径
session.get()
 <set fetch="" outer-join="" lazy="">


hibernate集合操作:
 *set
 list
 map
 composite
 idbag
unsaved-value:
 session.save(Object o);
  直接insert ....
 session.update(Object o)
  o必须有主键
 session.saveOrUpdate(Object o)
  如果o有主键,则update
  没有主键,则save()
 int pid = 0;
 Person p = new Person("aa",Date.valueOf(""));
 unsaved-value = null;

 Integer pid = null;

 要求:
  实体类主键属性吗,使用封装类型
  unsaved-value="null"
 

hibernate针对继承关系的实现:
 1 hierarchy
 
 2 concrete

 3 perclass

  Payment(账单:主键、金额、描述)
    |
CardPayment(信用卡账单:持卡人、银行)     CashPayment(现金账单:币种)

表设计方案:
 1  一张表存储所有的信息
  主键、金额、描述
  持卡人、卡号
  币种
  账单类型标识符:cardType

  优点:
   操作简单,效率较高
  缺点:
   冗余较多,浪费空间
 2 两张表
  信用卡账单表    现金账单表
   主键、金额、描述   主键、金额、描述
   持卡人、卡号    币种

  优点:
   操作简单,效率较高
  缺点:
   冗余较多、丧失了多态的优势
 3 三张表
  账单表    信用卡账单表  现金账单表
   主键、金额、描述  持卡人、卡号  币种

  优点:
   没有冗余,标准多态,节省空间
  缺点:
   操作复杂,效率较低

 


hibernate对于查询操作的支持:
 1 native SQL
  session.createSQLQuery(String sql)
  Query.list()集合存的是数组

 2 HQL 
  session.createQuery(String hql)
  在sql基础之上,针对类、属性操作
  select *** from *** where *** group by *** having *** order by ***;

 3 Criteria 标准面向对象查询,不出现sql语句
  session.createCriteria(***)

 4 NamedQuery
  session.getNamedQuery(String name)

 

 

 

 

 

 

 

 

  

原创粉丝点击