`

hibernate学习笔记第5讲-多对一关联映射many-to-one

阅读更多

 

Hibernate 多对一映射:


 

关联映射本质:

         *将关联关系映射到数据库。所谓关联关系就是对象模型在内存中的一个或者多个引用。

 

Many-to-one:

*在多的一段加上一个外键指向一的一端。

理解级联的含义:

         *是对象的连锁反应。

User映射关系配置:

<hibernate-mapping>

         <class name="com.bjsxt.hibernate.User" table="t_user">

                   <id name="id">

                            <generator class="native"/>

                   </id>

                   <property name="name"/>

                   <!--

                   <many-to-one name="group" column="groupid" cascade="all"/>

                    -->

                    <many-to-one name="group" column="groupid"/>

         </class>

</hibernate-mapping>


 

存储_例子1

session.beginTransaction();

                           

                            Group group = new Group();

                            group.setName("尚学堂");

                           

                            User user1 = new User();

                            user1.setName("10");

                            user1.setGroup(group);

                           

                            User user2 = new User();

                            user2.setName("容祖儿");

                            user2.setGroup(group);

                           

                            //不能成功保存,抛出TransientObjectException异常

                            //因为还没有保存Group,此时为Transient状态,oid没有分配值

                            //persistent状态的对象是不能引用transient状态的对象的

                            //关联关系配置中cascade =none

                            session.save(user1);

                            session.save(user2);

                            session.getTransaction().commit();

 

存储_例子2

                            session.beginTransaction();

                           

                            Group group = new Group();

                            group.setName("尚学堂");

                            //此时已保存到数据库中,变成persistent状态,但是在数据库中查不到,跟数据库的隔离级别有关系。

                            session.save(group);

                           

                            User user1 = new User();

                            user1.setName("10");

                            user1.setGroup(group);

                           

                            User user2 = new User();

                            user2.setName("容祖儿");

                            user2.setGroup(group);

                           

                            //可以正确存储

                            session.save(user1);

                            session.save(user2);

                            session.getTransaction().commit();

cascade  = none‘时,是级联操作,在存user1时会先把group存了。

  • 大小: 27.9 KB
  • 大小: 61.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics