hibernate3学习笔记(十九)|关系映射:一对一

A.唯一外键关联

DDL:

1.CREATE TABLE user (<br />2.    id INT(11) NOT NULL auto_increment PRIMARY KEY,<br />3.    name VARCHAR(100) NOT NULL default '',<br />4.    room_id INT(11)<br />5.);<br />6.<br />7.CREATE TABLE room (<br />8.    id INT(11) NOT NULL auto_increment PRIMARY KEY,<br />9.    address VARCHAR(100) NOT NULL default ''<br />10.);

User.java

1.package com.hb3.pack_02.model;<br />2.<br />3.public class User {<br />4.5.    private Integer id;<br />6.    private String name;<br />7.    private Room room;<br />8.<br />9.    public User() {<br />10.    }<br />11.12.    public Integer getId() {<br />13.        return id;<br />14.    }<br />15.    public void setId(Integer id) {<br />16.        this.id = id;<br />17.    }<br />18.    public String getName() {<br />19.        return name;<br />20.    }<br />21.    public void setName(String name) {<br />22.        this.name = name;<br />23.    }<br />24.    public Room getRoom() {<br />25.        return room;<br />26.    }<br />27.    public void setRoom(Room room) {<br />28.        this.room = room;<br />29.    }<br />30.}

Room.java

1.package com.hb3.pack_02.model;<br />2.<br />3.public class Room {<br />4.5.    private Integer id;<br />6.    private String address;<br />7.    private User user;<br />8.<br />9.    public Room() {<br />10.    }<br />11.<br />12.    public Integer getId() {<br />13.        return id;<br />14.    }<br />15.    public void setId(Integer id) {<br />16.        this.id = id;<br />17.    }<br />18.    public String getAddress() {<br />19.        return address;<br />20.    }<br />21.    public void setAddress(String address) {<br />22.        this.address = address;<br />23.    }<br />24.    public User getUser() {<br />25.        return user;<br />26.    }<br />27.    public void setUser(User user) {<br />28.        this.user = user;<br />29.    }<br />30.}

User.hbm.xml

1.<?xml version="1.0" encoding="UTF-8"?><br />2.3.<!DOCTYPE hibernate-mapping PUBLIC<br />4.    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />5.    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">6.7.<hibernate-mapping><br />8.9.    <class name="com.hb3.pack_02.model.User" table="user"><br />10.        <id name="id" column="id" type="java.lang.Integer"><br />11.            <generator class="native"/><br />12.        </id><br />13.<br />14.        <property name="name" column="name" type="java.lang.String"/><br />15.<br />16.        <many-to-one name="room"<br />17.                     column="room_id"<br />18.                     class="com.hb3.pack_02.model.Room"19.                     cascade="all"20.                     outer-join="true"21.                     unique="true"/><br />22.    </class><br />23.24.</hibernate-mapping>

Room.hbm.xml

1.<?xml version="1.0" encoding="UTF-8"?><br />2.3.<!DOCTYPE hibernate-mapping PUBLIC<br />4.    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />5.    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">6.7.<hibernate-mapping><br />8.9.    <class name="com.hb3.pack_02.model.Room" table="room"><br />10.        <id name="id" column="id"><br />11.            <generator class="native"/><br />12.        </id><br />13.14.        <property name="address"<br />15.                  column="address"<br />16.                  type="java.lang.String"/><br />17.<br />18.        <one-to-one name="user"19.                    class="com.hb3.pack_02.model.User"20.                    property-ref="room"/>21.    </class><br />22.23.</hibernate-mapping>

测试代码:

1.package com.hb3.pack_02;<br />2.<br />3.import org.hibernate.Session;<br />4.import org.hibernate.SessionFactory;<br />5.import org.hibernate.Transaction;<br />6.import org.hibernate.cfg.Configuration;<br />7.8.import com.hb3.pack_02.model.Room;<br />9.import com.hb3.pack_02.model.User;<br />10.11.public class BusinessService {<br />12.13.    public static void main(String[] args) {<br />14.<br />15.        Configuration config = new Configuration().configure();<br />16.        SessionFactory sessionFactory = config.buildSessionFactory();<br />17.        Session session = sessionFactory.openSession();<br />18.19.        User user1 = new User();<br />20.        user1.setName("shenbin");<br />21.        Room room1 = new Room();<br />22.        room1.setAddress("NTU-M8-419");<br />23.        user1.setRoom(room1);<br />24.<br />25.        User user2 = new User();<br />26.        user2.setName("chanyan");<br />27.        Room room2 = new Room();<br />28.        room2.setAddress("NTU-M8-418");<br />29.        user2.setRoom(room2);<br />30.<br />31.        Transaction tx = session.beginTransaction();<br />32.        session.save(user1);<br />33.        session.save(user2);<br />34.        tx.commit();<br />35.<br />36.        Room room = (Room) session.load(Room.class, new Integer(1));<br />37.        System.out.println(room.getUser().getName());<br />38.<br />39.        session.close();<br />40.        sessionFactory.close();<br />41.    }<br />42.}

A.主键关联

DDL:

1.CREATE TABLE user (<br />2.    id INT(11) NOT NULL auto_increment PRIMARY KEY,<br />3.    name VARCHAR(100) NOT NULL default ''<br />4.);<br />5.<br />6.CREATE TABLE room (<br />7.    id INT(11) NOT NULL auto_increment PRIMARY KEY,<br />8.    address VARCHAR(100) NOT NULL default ''<br />9.);

Room和User类同上。

Room.hbm.xml

1.<?xml version="1.0" encoding="UTF-8"?><br />2.3.<!DOCTYPE hibernate-mapping PUBLIC<br />4.    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />5.    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">6.<br />7.<hibernate-mapping><br />8.<br />9.    <class name="com.hb3.pack_18.model.Room" table="room">10.<br />11.        <id name="id" column="id"><br />12.            <generator class="foreign"><br />13.                <param name="property">user</param>14.            </generator>15.        </id><br />16.17.        <property name="address"<br />18.                  column="address"<br />19.                  type="java.lang.String"/><br />20.<br />21.        <one-to-one name="user"22.                    class="com.hb3.pack_18.model.User"23.                    constrained="true"/>24.    </class><br />25.26.</hibernate-mapping>

User.hbm.xml

1.<?xml version="1.0" encoding="UTF-8"?><br />2.3.<!DOCTYPE hibernate-mapping PUBLIC<br />4.    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />5.    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">6.7.<hibernate-mapping><br />8.9.    <class name="com.hb3.pack_18.model.User" table="user"><br />10.<br />11.        <id name="id" column="id" type="java.lang.Integer"><br />12.            <generator class="native"/><br />13.        </id><br />14.15.        <property name="name" column="name" type="java.lang.String"/><br />16.<br />17.        <one-to-one name="room"<br />18.                    class="com.hb3.pack_18.model.Room"19.                    cascade="all"/>20.    </class><br />21.22.</hibernate-mapping>

测试代码:

1.package com.hb3.pack_18;<br />2.<br />3.import java.io.IOException;<br />4.import java.sql.SQLException;<br />5.6.import org.hibernate.Session;<br />7.import org.hibernate.SessionFactory;<br />8.import org.hibernate.Transaction;<br />9.import org.hibernate.cfg.Configuration;<br />10.11.import com.hb3.pack_18.model.Room;<br />12.import com.hb3.pack_18.model.User;<br />13.14.public class BusinessService {<br />15.16.    public static void main(String[] args) throws IOException, SQLException {<br />17.<br />18.        Configuration config = new Configuration().configure();<br />19.        SessionFactory sessionFactory = config.buildSessionFactory();<br />20.        Session session = sessionFactory.openSession();<br />21.22.<br />23.        User user1 = new User();<br />24.        user1.setName("chanyan");<br />25.        Room room1 = new Room();<br />26.        room1.setAddress("NTU-M8-419");<br />27.        user1.setRoom(room1);<br />28.        room1.setUser(user1);<br />29.<br />30.        User user2 = new User();<br />31.        user2.setName("shenbin");<br />32.        Room room2 = new Room();<br />33.        room2.setAddress("NTU-M8-418");<br />34.        user2.setRoom(room2);<br />35.        room2.setUser(user2);<br />36.<br />37.        Transaction tx = session.beginTransaction();<br />38.        session.save(user1);<br />39.        session.save(user2);<br />40.        tx.commit();<br />41.42.<br />43.        session.close();<br />44.        sessionFactory.close();<br />45.    }<br />46.}

世上最累人的事,莫过於虚伪的过日子

hibernate3学习笔记(十九)|关系映射:一对一

相关文章:

你感兴趣的文章:

标签云: