您的位置:首页 > 其它

Hibernate中的关联关系一对一映射

2016-11-28 22:10 465 查看
1:People

package com.hibernate1.entity;

public class People {
 private Integer id;
   private String name;
   private String sex;
   private IdCard idCard;
public People() {
super();
// TODO Auto-generated constructor stub
}
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public IdCard getIdCard() {
return idCard;
}
public void setIdCard(IdCard idCard) {
this.idCard = idCard;
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + ", sex=" + sex
+ ", idCard=" + idCard + "]";
}
   

}

   

2:IdCard

package com.hibernate1.entity;

public class IdCard {
private Integer id;
   private String cardNum;
   private People people;
public IdCard() {
super();
// TODO Auto-generated constructor stub
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCardNum() {
return cardNum;
}
public void setCardNum(String cardNum) {
this.cardNum = cardNum;
}
public People getPeople() {
return people;
}
public void setPeople(People people) {
this.people = people;
}
@Override
public String toString() {
return "IdCard [id=" + id + ", cardNum=" + cardNum + ", people="
+ people + "]";
}
   

}

  3:

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

  <!-- 配置连接数据库的基本信息 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/mydatabase</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 配置HiberNate的基本信息 -->
<!-- HiberNate使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 操作是是否在控制台显示 -->
<property name="show_sql">true</property>
<!--是否对进行格式化  -->
<property name="format_sql">true</property>
<!--指定自定生成数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/hibernate1/study/Student.hbm.xml"/>
<mapping resource="com/hibernate1/study/Classes.hbm.xml"/>
<mapping resource="com/hibernate1/entity/People.hbm.xml"/>
<mapping resource="com/hibernate1/entity/IdCard.hbm.xml"/>
<!-- <mapping resource="com/hibernate1/util/Developer.hbm.xml"/>
<mapping resource="com/hibernate1/util/Project.hbm.xml"/> -->
<!-- <mapping resource="com/hibernate1/entity/News.hbm.xml"/>
<mapping resource="com/hibernate1/entity/Customer.hbm.xml"/>
<mapping resource="com/hibernate1/entity/Order.hbm.xml"/> 
<mapping resource="com/hibernate1/study/Customer.hbm.xml"/>
<mapping resource="com/hibernate1/study/Order.hbm.xml"/>-->
<!--配置使用的二级缓存  -->
<!-- <property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</property>

    <cache usage="read-write" class="com.study.hello.News"/> -->

</session-factory>

</hibernate-configuration>

  4:People.hbm.xml

<?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>

        <!--对象映射文件-->

        <class name="com.hibernate1.entity.People" table="people">

        <id name="id" type="java.lang.Integer">

            <column name="id"/>

            <!--指定主键的生成方式  -->

            <generator class="native"></generator>

        </id>

        <property name="name" type="java.lang.String" column="name"></property>

        <property name="sex" type="java.lang.String" column="sex"></property>

        <!-- fetch默认值为join的方式,采用左外连接的方式查询;当fetch=‘select’的时候,默认会发送两条SQL -->

        <!-- 一对一的延迟加载的方式是将 constrained设置为true,然后将被延迟加载的一方的class中的lazy属性设置为true(默认值为true)-->

        <one-to-one name="idCard" class="com.hibernate1.entity.IdCard" cascade="all"></one-to-one>

    </class>

</hibernate-mapping>

 5:IdCard.hbm.xml

<?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>

        <!--对象映射文件-->

        <class name="com.hibernate1.entity.IdCard" table="cards">

        <id name="id" type="java.lang.Integer">

            <column name="id"/>

            <!--指定主键的生成方式  -->

            <generator class="native"></generator>

        </id>

        <property name="cardNum" type="java.lang.String" column="card_num"></property>

        <one-to-one name="people" class="com.hibernate1.entity.People"></one-to-one>

    </class>

</hibernate-mapping>

  

6:Save

package com.hibernate1.entity;

import org.hibernate.Session;

import org.hibernate.Transaction;

import com.hibernate1.util.HibernateUtil;

public class Test1 {

  public static void main(String[] args) {
 /*// 1:下面的方法默认加载hibernate.cfg.xml文件
 Configuration configuare = new Configuration().configure();
 // 2:创建sessionFactory
     SessionFactory ssssionFactory = configuare.buildSessionFactory();
          // 3:创建session
        Session session =ssssionFactory.openSession();*/
HibernateUtil hibernateUtil=new HibernateUtil();
Session session=hibernateUtil.getSession();
          // 4:开始事务,Hibernate必须显式的手动提交事务
          Transaction transaction = session.beginTransaction();
          // 5:保存
        People people = new People();
         people.setName("AAA");
         people.setSex("男");
         IdCard idCard = new IdCard();
         idCard.setCardNum("889900");
         idCard.setPeople(people);
         people.setIdCard(idCard);
         session.save(people);
         // 6:提交事务
         transaction.commit();
       // 7:关闭session
         hibernateUtil.closeSession();
       //8:关闭sessionFactory
         hibernateUtil.closeSessionFactory();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: