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.}
世上最累人的事,莫过於虚伪的过日子