`
yangzhibin_java
  • 浏览: 50937 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hibernate 基础知识

阅读更多

一,session 缓存(不跨session,就是只能在以个session中)一级缓存

1.session.get(User.class, 1); 

      1.不支持lazy

      2.如果没有对象返回null

2.session.load(User.class,2);

      1.支持lazy (先返回一个cglib产生的代理对象)

      2.如果没有对象返回异常(org.hibernate.ObjectNotFoundException

 

二,session删除

        User user = new User();
        user.setId(13);
        session.delete(user);//hibernate是不建议删除一个脱管状态的对象的

三,对象的状态


              1.transient 瞬时状态

                     * 在数据库中没有与之匹配的数据

                     * 没有纳入 session 的管理

                    

              2. persistent 持久化状态

                     * persistent 状态的对象在数据库中有与之匹配的数据

                     * 纳入了 session 的管理

                     * 在清理缓存(脏数据检查)的时候 , 会和数据库同步

                     * 不可以有相同id的持久化状态对象

                    

              3.detached 脱管状态

                     * 在数据库中有与之匹配的数据

                     * 没有纳入 session 的管理  

三,session中update和merge的区别

 

              1.merge不改变对象状态(不会从脱管状态 变为持久化状态

              2.update改变了对象状态(会从脱管状态 变为持久化状态

                          该方法存在的问题:持久化状态不能有2个id相同的对象

四,hibernate hbm2ddl(org.hibernate.tool.hbm2ddl )

               SchemaExport

                         create(是否在控制台打印语句,是否往数据库中执行ddl)

五,主键生成策略

               1.自动增长

                         native自动选择identity,sequence

                                identity       <----->       mysql

                                sequence    <----->       oracle

                2.自定义

                        assigned

                        uuid ----------- 32位的16进制的数字的字符串

                3.多表间(可以使用另外表单主键来作为我的主键

                         foreign

六,hibernate中关系

                单向

                    1  -  1(包括:唯一外键 (重点),主键

                    1  -  N

                     N -  1

                     N -  N

                 双向

                     1  -  1    双向只是改变了对象模型,表的结构不改变

                     1  -  N

                      N -  N

           1,级联(cascade ) ----你干什么我就干什么(只对增加,删除,修改 有关系)

                      1.1 为什么使用

                             但有对象有关系时,持久化主对象,如果次对象没有持久化,那么持久化主对象时就报错

                      1.2 取值( 例如,cascade="persist,merge,evict"

                             persist
                             merge
                             delete
                             save-update
                             evict
                             replicate
                             lock
                             refresh
                             delete-orphan
                             all                                --------       1-1 中常用

                             none                           --------         默认情况下

 

 

  • 大小: 16.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics