hibernate基础08:关联映射之基于外键的双向一对一

2021-02-18 10:17

阅读:500

标签:pass   gen   show   port   参数   nat   格式   mysqld   ping   

1、Java实体bean类

package com.project.pojo;

import java.io.Serializable;

public class Card implements Serializable{
    private int id;
    private String address;
    private Person person;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Person getPerson() {
        return person;
    }
    public void setPerson(Person person) {
        this.person = person;
    }
    

}
package com.project.pojo;

import java.io.Serializable;

public class Person implements Serializable{
    private int id ;
    private String name;
    private String sex;
    private Card card;
    public int getId() {
        return id;
    }
    public void setId(int 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 Card getCard() {
        return card;
    }
    public void setCard(Card card) {
        this.card = card;
    }

}

2、hbm.xml配置

xml version="1.0" encoding="UTF-8"?>
DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
hibernate-mapping package="com.project.pojo">
    class name="Card" table="t_card">
        id name="id" column="id" type="int">
            generator class="native">generator>
        id>
        property name="address" />
        one-to-one name="person" property-ref="card">one-to-one>
    class>

hibernate-mapping>
xml version="1.0" encoding="UTF-8"?>
DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
hibernate-mapping package="com.project.pojo">
    class name="Person" table="t_person">
        id name="id" column="id" type="int">
            generator class="native">generator>
        id>
        property name="name" />
        property name="sex" />
        many-to-one name="card" column="card_id" unique="true" />
    class>

hibernate-mapping>

3、hibernate.cfg.xml

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="dialect">org.hibernate.dialect.MySQLDialectproperty>
        property name="connection.driver_class">com.mysql.jdbc.Driverproperty>
        property name="connection.url">jdbc:mysql://192.168.1.59:3306/hibernate?characterEncoding=UTF8property>
        property name="connection.username">rootproperty>
        property name="connection.password">1234property>
        
        
        
        property name="show_sql">trueproperty>
        
        property name="format_sql">trueproperty>
        
        
        mapping resource="com/project/pojo/Card.hbm.xml" />
        mapping resource="com/project/pojo/Person.hbm.xml" />
    session-factory >
hibernate-configuration>

4、测试

package com.project.test;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.project.pojo.Card;
import com.project.pojo.Person;
import com.project.util.HibernateUtil;

public class HibernateTest {
    Session session = null;
    Transaction ts = null;
    
    @Before
    public void setUp(){
        session = HibernateUtil.getSession();
        ts = session.beginTransaction();
    }
    
    @After
    public void tearDown(){
        HibernateUtil.closeSession();
    }
    
    @Test
    public void testCreateDB(){
        Configuration cfg = new Configuration().configure();
        //使得hibernate映射信息转换为数据库识别的dll语言
        SchemaExport se = new SchemaExport(cfg);
        //第一个参数:是否打印dll语句
        //第二个参数:是否将dll到数据库中执行
        se.create(true, true);
    }
    
    @Test
    public void testInit(){
        try {
            Card c1 = new Card();
            c1.setAddress("xx市1区");
            Card c2 = new Card();
            c2.setAddress("xx市2区");
            session.save(c1);
            session.save(c2);
            
            Person p1 = new Person();
            p1.setName("张三");
            p1.setSex("男");
            p1.setCard(c1);
            Person p2 = new Person();
            p2.setName("李四");
            p2.setSex("男");
            p2.setCard(c2);
            
            session.save(p1);
            session.save(p2);
            ts.commit();
        } catch (Exception e) {
            e.printStackTrace();
            if(ts!=null)ts.rollback();
        }
    }
    
    @Test
    public void testSelect(){
        Person p = (Person)session.get(Person.class, 1);
        System.out.println(p.getName()+"\t"+p.getSex());
        System.out.println("---------------");
        System.out.println(p.getCard().getAddress());
        System.out.println("=================");
        System.out.println(p.getCard().getPerson().getName());
        
    }
}

 

hibernate基础08:关联映射之基于外键的双向一对一

标签:pass   gen   show   port   参数   nat   格式   mysqld   ping   

原文地址:https://www.cnblogs.com/chai-blogs/p/12941946.html


评论


亲,登录后才可以留言!