网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

080306日志(hibernate对象操作-多对多关联)

http://www.diybl.com/ 2008-3-8  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】

过程:
新建一个javabean Role.java
包含属性
private long id;
    private String rolename;
    private String rolecode;
    private String remark;
    private Set events = new HashSet();
新增role.hbm.xml来映射role表,没什么特别之处,唯一不同的地方在于新增表的多对多关联
<set name="events" table="role_userpass">
            <key column="roleid"/>
            <many-to-many column="logid" class="com.lucifer.hibernate.events.Ian_UserpassForm"/>
        </set>
第一行的name就是Role类里java.util.Set的实例名,table是两表做关联映射表的表名
关联里的标识字段名,role一端由KEY来定义,另一张表则用many-to-many里的column属性定义,class用来定义另一表的映射类

在EventManager里新增一个方法(该方法完整代码见前几期的日志)
private void addRoleToUserpass(long logid,long roleid)
    {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
       
        Iam_UserpassForm form = (Iam_UserpassForm)session.load(Iam_UserpassForm.class, logid);
        Role role = (Role)session.load(Role.class, roleid);
       
        role.getEvents().add(form);
       
        session.getTransaction().commit();
    }
重编译后做了ant run -Daction=save操作,并没有看出做了多对多之后有什么变化,即使是在加载了ROLE表之后也是如此,奇怪啊
到目前为止对持久化状态有了些个人的体会(不一定对),感觉hibernate对某表的持久化状态是跟SessionFactory息息相关的,个人认为当某表被加载到session里时该表就被持久化,比如做session.save时。
那么这个持久化的状态在什么时候解除呢?应该是在commit或者rollback的时候解除,或者没有做上述2个操作,当此session失效或者被关闭时也会接触;这样看来这个持久化状态似乎于hibernate.cfg.xml中的<property name="current_session_context_class">thread</property>也有关系,这个要去查一下。
解答:
2008-02-29-2:可以对表进行操作后针对XXXX.hbm.xml做了一系列的测试,发现在<property name="XXXX"/>如果不设置column属性,则hibernate默认name属性的值对表字段进行映射,如果设置了column属性则根据该属性;若不设置type属性,则由hibernate自动对该列的数据类型进行匹配(对int,String,java.util.Date进行了测试,匹配正常)
2008-03-05-1:昨天写完日志后又仔细看了下自己的build.xml,总算是理解了classpathref是类路径引用的真实含义。。。classpathref="libraries"这个值libraries我在前面定义过,是一个路径指想lib目录。。
疑问:
多对多设置还需要多测试观察,至少目前看不出干什么用的
附录:
java.util.Set类是一种无重复元素的collection,既其中所有元素都不满足条件A.equals(B)为TRUE。我比较好奇这种集合类型是如何保证被add的元素不重复的,莫非ADD同一个值两次会报异常?
感想:
今天没啥感想,38快到了,祝所有女人节日快乐

欢迎光临DIY部落,点击这里查看更多文章教程   【点击打包该文章】
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言

 

最新新闻