首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HiberNate学习-二映射关系

2013-03-12 
HiberNate学习-2映射关系!-- Person的主键来源于idCard, 也就是共享idCard主键 --generator src/img/

HiberNate学习-2映射关系
HiberNate学习-二映射关系HiberNate学习-二映射关系

    <!-- Person的主键来源于idCard, 也就是共享idCard主键 --><generator src="/img/2013/03/11/110622588.gif"> HiberNate学习-二映射关系HiberNate学习-二映射关系
      <!-- one-to-one标签的含义,指示hibernate怎样加载它的关联对象,默认根据主键加载constrained="true",表明当前主键上存在一个约束,person的主键作为外键参照了idcard --><one-to-one name="idCard" constrained="true" />

      ?

      ?

      一:实体类:

      HiberNate学习-二映射关系HiberNate学习-二映射关系
        package com.tao.hibernate.one2one;public class Person {private Integer id;private String name;private IdCard idCard;public Person() {super();}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public IdCard getIdCard() {return idCard;}public void setIdCard(IdCard idCard) {this.idCard = idCard;}}

        ?

        HiberNate学习-二映射关系HiberNate学习-二映射关系
          package com.tao.hibernate.one2one;public class IdCard {private Integer id;private String cardNo;private Person person;public IdCard() {super();}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getCardNo() {return cardNo;}public void setCardNo(String cardNo) {this.cardNo = cardNo;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}

          二:映射文件:

          HiberNate学习-二映射关系HiberNate学习-二映射关系
            <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.tao.hibernate.one2one"><class name="Person" table="t_Person"><id name="id" column="id" type="integer"><!-- Person的主键来源于idCard, 也就是共享idCard主键 --><generator column="name" /><!-- one-to-one标签的含义,指示hibernate怎样加载它的关联对象,默认根据主键加载constrained="true",表明当前主键上存在一个约束,person的主键作为外键参照了idcard --><one-to-one name="idCard" constrained="true" /></class></hibernate-mapping>

            ?

            HiberNate学习-二映射关系HiberNate学习-二映射关系
              <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.tao.hibernate.one2one"><class name="IdCard" table="t_IdCard"><id name="id" column="id" type="integer"><generator /></id><property name="cardNo" column="cardNo" /><one-to-one name="person" fetch="select"/></class></hibernate-mapping>

              三:测试类

              HiberNate学习-二映射关系HiberNate学习-二映射关系

                ?

                一:实体类:

                HiberNate学习-二映射关系HiberNate学习-二映射关系
                  package com.tao.hibernate.one2one2;public class IdCard2 {private Integer id;private String cardNo;private Person2 person;public IdCard2() {super();}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getCardNo() {return cardNo;}public void setCardNo(String cardNo) {this.cardNo = cardNo;}public Person2 getPerson() {return person;}public void setPerson(Person2 person) {this.person = person;}}

                  ?

                  HiberNate学习-二映射关系HiberNate学习-二映射关系
                    package com.tao.hibernate.one2one2;public class Person2 {private Integer id;private String name;private IdCard2 idCard;public Person2() {super();}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public IdCard2 getIdCard() {return idCard;}public void setIdCard(IdCard2 idCard2) {this.idCard = idCard2;}}

                    ?

                    二:映射文件:

                    HiberNate学习-二映射关系HiberNate学习-二映射关系
                      <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.tao.hibernate.one2one2"><class name="IdCard2" table="t_IdCard2"><id name="id" column="id" type="integer"><generator /></id><property name="cardNo" column="cardNo" /><one-to-one name="person" property-ref="idCard" /></class></hibernate-mapping>

                      ?

                      HiberNate学习-二映射关系HiberNate学习-二映射关系
                        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.tao.hibernate.one2one2"><class name="Person2" table="t_Person2"><id name="id" column="id" type="integer"><generator column="name" /><many-to-one name="idCard" unique="true"/></class></hibernate-mapping>

                        ?

                        三:测试类:

                        HiberNate学习-二映射关系HiberNate学习-二映射关系
                        理解级联的含义?
                        * 是对象的连锁操作

                        ?

                        一:实体类

                        HiberNate学习-二映射关系HiberNate学习-二映射关系
                          package com.tao.hibernate.many2one;public class Group {private Integer id;private String name;public Group() {super();}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

                          ?

                          HiberNate学习-二映射关系HiberNate学习-二映射关系
                            package com.tao.hibernate.many2one;public class User {private Integer id;private String name;private Group group;public User() {super();}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}}

                            ?

                            二:映射文件

                            HiberNate学习-二映射关系HiberNate学习-二映射关系
                              <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.tao.hibernate.many2one"><class name="Group" table="t_group"><id name="id" column="id" type="integer"><generator column="name" /></class></hibernate-mapping>

                              ?

                              HiberNate学习-二映射关系HiberNate学习-二映射关系
                                <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.tao.hibernate.many2one"><class name="User" table="t_user"><id name="id" column="id" type="integer"><generator column="name" /><many-to-one name="group" column="groupId"/></class></hibernate-mapping>

                                ?

                                三:测试类:

                                HiberNate学习-二映射关系HiberNate学习-二映射关系
                                  package com.tao.hibernate.many2one; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import com.tao.hibernate.HibernateUtils; public class TestMain { Session session = HibernateUtils.getFactory().openSession(); @Test public void testSave() { Group group = new Group(); group.setName("second group"); User user = new User(); user.setName("Tao2"); user.setGroup(group); Transaction ts = session.beginTransaction(); ts.begin(); session.save(group); session.save(user); ts.commit(); } @Test public void testLoad() { Session session = HibernateUtils.getFactory().openSession(); User user = (User) session.load(User.class, 1); System.out.println(user.getName()); System.out.println(user.getGroup().getName()); } }

热点排行