one-to-one

Author.java

package com.javamodel.hibernate;

public class Author{
    
    private String id ;
    private String alias = null;
    private Person person = null;
    
    /**
     * @return
     */
    public String getAlias() {
        return alias;
    }

    /**
     * @return
     */
    public Person getPerson() {
        return person;
    }

    /**
     * @param string
     */
    public void setAlias(String string) {
        alias = string;
    }
    /**
     * @param person
     */
    public void setPerson(Person person) {
        this.person = person;
    }
    /**
     * @return
     */
    public String getId() {
        return id;
    }
    /**
     * @param i
     */
    public void setId(String i) {
        id = i;
    }

}

author.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
    <class name="com.javamodel.hibernate.Author" table="author" > 
        <id name="id" column="id">
            <!-- 这里我把author作为主表,外键的描述也可以在Person.hbm.xml中表述,也是可以的-->
            <generator class="foreign">
              <param name="property">person</param>
            </generator>
        </id>
        <property name="alias" column="alias" />
        <one-to-one name="person" class="com.javamodel.hibernate.Person" cascade="all" constrained="true" />
    </class>
</hibernate-mapping>

Example.java

package com.javamodel.hibernate;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;

public class Example{
    
    private static SessionFactory _sessions = null;
    private static Properties pops = new Properties();
    
    static{
        try {
            InputStream stream = Example.class.getResourceAsStream("hibernate.properties");
            try {
                pops.load(stream);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            Configuration cfg = new Configuration();
            cfg.addClass(Person.class);
            cfg.addClass(Author.class);
            cfg.setProperties(pops);
            _sessions = cfg.buildSessionFactory();
            
        } catch (MappingException e) {
           e.printStackTrace();
        } catch (HibernateException e) {
           e.printStackTrace();
        }
    
    }
    
    public static void main(String[] args) throws HibernateException {
        
        Person person = new Person();
        
        person.setName("HengfeiDo");
        person.setEmail("smallduzi@sohu.com");
        
        Author author = new Author();

        author.setAlias("smallduzi");
        author.setPerson(person);

        Session session = _sessions.openSession();
        
        Transaction tx = null;
        try{
            tx = session.beginTransaction();
            session.save(author);
            
            tx.commit();
            System.out.println("over");
        }catch(HibernateException he){
            if(tx != null) tx.rollback();
            throw he;
        }
        finally{
            session.close();
        }
        
    }
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值