映射实体关联关系(一对一)

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(111) NOT NULL default '',
  `room_id` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `room` (
  `id` int(11) NOT NULL auto_increment,
  `address` varchar(111) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGIN

package com.user.oneToone;

import java.util.Set;


public class Room {
	private int id;
	private String address;
	public Room(){}
	private User user;
	
	
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	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;
	}
	
}




package com.user.oneToone;

import java.util.List;


public class User {

	private int id;
	private String name;

	private Room room;

	public User(){}
	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 Room getRoom() {
		return room;
	}

	public void setRoom(Room room) {
		this.room = room;
	}
	
	

}


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory >
		<property name="show_sql">true</property>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="connection.driver_class">
		org.gjt.mm.mysql.Driver
		</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/Sample
		</property>
		<property name="connection.username">
			root
		</property>
		<property name="connection.password">
			root
		</property>
		<!-- 一对多
		<mapping resource="com/user/oneTomany/User.hbm.xml" />
		<mapping resource="com/user/oneTomany/Room.hbm.xml" />
		 -->
		<!-- 一对一 -->
		<mapping resource="com/user/oneToone/User.hbm.xml" />
		<mapping resource="com/user/oneToone/Room.hbm.xml" />
		
	</session-factory>
</hibernate-configuration>


<?xml version="1.0"?>
<!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.user.oneToone.Room" table="room">
		<id column="id" name="id" type="java.lang.Integer">
			<generator class="native" />
		</id>
		<property column="address" name="address" type="string"/>
		<!-- property-ref告诉hibernate查询出user并将其参考至room -->
		<one-to-one name="user" class="com.user.oneToone.User" property-ref="room"/>

	</class>
</hibernate-mapping>

<?xml version="1.0"?>
<!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.user.oneToone.User" table="user">
		<id column="id" name="id" type="java.lang.Integer">
			<generator class="native" />
		</id>
		<property column="name" name="name" type="string" />
		<!-- 一对一是多对一的特例,只需要在多的一方加上 unique="true" -->
		<many-to-one name="room" class="com.user.oneToone.Room" column="room_id" 
		cascade="save-update"  outer-join="true" unique="true"/>
	
		

	</class>
</hibernate-mapping>



测试代码:
package com.user.test;

import junit.framework.TestCase;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

import com.user.oneToone.Room;
import com.user.oneToone.User;
import com.util.HibernateUtil;

public class oneToone extends TestCase{
	
	//自动创建数据库
	public void testCreate()
	{
		Configuration conf=new Configuration().configure("com/user/oneToone/hibernate.cfg.xml");
		SchemaExport export=new SchemaExport(conf);
		export.create(true, true);
		
	}
	//添加数据
	public void testSave()
	{
		Configuration conf=new Configuration().configure("com/user/oneToone/hibernate.cfg.xml");
		SessionFactory factory=conf.buildSessionFactory();
		Session session =factory.openSession();
		Transaction tx=session.beginTransaction();
		User user1=new User();
		user1.setName("user1");
		
		Room room1=new Room();
		room1.setAddress("room1");
		user1.setRoom(room1);
		
		User user2=new User();
		user2.setName("user2");
		
		Room room2=new Room();
		room2.setAddress("room2");
		user2.setRoom(room2);
		
		session.save(user1);
		session.save(user2);
		tx.commit();
		session.close();	
	}
	

}

你可能感兴趣的:(java,Hibernate,mysql,xml,.net)