hibernate入门篇之新增特性_2:one-to-one
接上一篇文章Hibernate入门篇之新增特性。我们继续进行!
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();
}
}
}
如果大家有更好的实现方式可拿出来讨论一下!
我将在下一篇文章介绍one-to-many。

浙公网安备 33010602011771号