hibernate零散笔记-基础

DDL 数据库定义语言
DML 数据库操作语言
DCL    数据库控制语言
Hiberante Sessionfactory必须配置:
connection.username 数据库用户名    
connection.password 数据密码
connection.url  数据库地址
connection.driver_class JDBC包
dialect Hiberante方言

创建Session步骤:
1.Configuration configuration = new Configuration();
2.configuration.configure(); 重载可写配置文件路径
3.SessionFactory sessionFactory=configuration.buildSessionFactory();
4.sessionFactory.opensession();

Session  增删改基本方法
    1.查询 get(Class class,Serializable serializable )
           get(String classname,Serializable serializable ) classname为类的名称
           load()参数和get()相同 唯一不同点就是load只加载ID列其他列等需要用到的时候在加载,返回代理对象并不马上读取数据库!!!!!!!!!!
    2.增加
          persist()把一个瞬态的实例持久化,但是并不保证标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间。
          persist保证,当它在一个transaction外部被调用的时候并不触发一个Sql Insert,这个功能是很有用的,当我们通过继承Session/persis
          context来封装一个长会话流程的时候,一个persist这样的函数是需要的。
          save(Object ojb)
          save(String classname, Object obj) classname为类的名称
          saveOrUpdate(Object ojb) saveOrUpdate会自动判断该对象数据库是否有记录有则更新反之增加
          saveOrUpdate(String classname, Object obj) classname为类的名称
    3修改
          merge(),如果数据库中有该记录,则更新该记录,如果不存在该记录,则进行insert操作,调用的对象还是脱管的!!!!!!!!!!!
          使用update的话,会无条件执行update,
          也就是说如果数据库中有该记录的话,merge和update是一样的,但是如果数据库中没有该记录,使用merge执行insert,不会报错,而使用update会报错。
          update(Object ojb) 如果数据库不存在该记录则会出现异常
          update(String classname, Object obj) classname为类的名称
          saveOrUpdate(Object ojb) saveOrUpdate会自动判断该对象数据库是否有记录有则更新反之增加
          saveOrUpdate(String classname, Object obj) classname为类的名称
    4删除
         delete(Object ojb)
         delete(String classname, Object obj) classname为类的名称
createQuery HQL语句操作
    1.查询
         list()获得结果列表List
         uniqueResult()获取一个结果(一个对象) ,如果查询到的不是一个完整多大对象 需要强转成数组操作
         executeUpdate() return int 作用不明
createQuery 条件查询
    1.list() 返回结果集合
    2.unqueResult()返回一条记录
createCriteria 条件查询
    1.添加条件
         add() 使用add方法来添加具体的约束或者条件
                1.Restriction.eq()    等于
                2.Restriction.alleq() 利用map进行多个等于的限制
                3.Restrictions.gt()    >
                4.Restrictions.ge()    >=
                5.Restrictions.lt()    <
                6.Restrictions.le()    <=
                7.Restrictions.between() 在...之间
                8.Restrictions.like    like
                9.Restrictions.in      in
                10.Restrictions.and    and
                11.Restrictions.or     or
                12.Restrictions.sqlRestriction() 用SQL限定查询
清除session缓存的几种方法:
    1.session.close(); 关闭session缓存也将被释放
    2.session.clear();
    3.session.evict();
瞬时对象转持久对象方法:
    1.session.save();
    2.session.saveOrUpdate();
    3.session.get();
    4.session.find();
    5.session.load();
    6.session.iterate();
脱管对象转持久对象方法:
    1.update();
    2.session.saveOrUpdate();
    3.lock();
hibernate映射基数有几种 ?    
    4种
    多对一
    <many-to-one name="depart" cloumn="depart_id"/>
     如果想配对另外一张表的非主键用property-ref=""
    一对多
    <set name="属性名" >
    <key cloumn="外键"/>//多方的外键
    <one-to-many class="集合需要放置的类"></one-to-many>
    一对一
    <one-to-one name="需要关联的对象" property-ref=""/>
    </set>
    多对多
    <set name="集合属性名" table="中间表名">
    <key column="中间表外键"></key>
    <many-to-many class="泛型集合里的类"  column="另张表的ID列"></many-to-many>
    </set>

你可能感兴趣的:(hibernate零散笔记-基础)