A.唯一外鍵關聯
ExtJS教程- Hibernate教程-Struts2 教程-Lucene教程
DDL:
- CREATE TABLE user (
- id INT(11) NOT NULL auto_increment PRIMARY KEY,
- name VARCHAR(100) NOT NULL default '',
- room_id INT(11)
- );
- CREATE TABLE room (
- id INT(11) NOT NULL auto_increment PRIMARY KEY,
- address VARCHAR(100) NOT NULL default ''
- );
User.java
- package com.hb3.pack_02.model;
- public class User {
- private Integer id;
- private String name;
- private Room room;
- public User() {
- }
- public Integer getId() {
- return id;
- }
- public void setId(Integer 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;
- }
- }
Room.java
- package com.hb3.pack_02.model;
- public class Room {
- private Integer id;
- private String address;
- private User user;
- public Room() {
- }
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- }
User.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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.hb3.pack_02.model.User" table="user">
- <id name="id" column="id" type="java.lang.Integer">
- <generator class="native"/>
- </id>
- <property name="name" column="name" type="java.lang.String"/>
- <many-to-one name="room"
- column="room_id"
- class="com.hb3.pack_02.model.Room"
- cascade="all"
- outer-join="true"
- unique="true"/>
- </class>
- </hibernate-mapping>
Room.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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.hb3.pack_02.model.Room" table="room">
- <id name="id" column="id">
- <generator class="native"/>
- </id>
- <property name="address"
- column="address"
- type="java.lang.String"/>
- <one-to-one name="user"
- class="com.hb3.pack_02.model.User"
- property-ref="room"/>
- </class>
- </hibernate-mapping>
測試代碼:
- package com.hb3.pack_02;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import com.hb3.pack_02.model.Room;
- import com.hb3.pack_02.model.User;
- public class BusinessService {
- public static void main(String[] args) {
- Configuration config = new Configuration().configure();
- SessionFactory sessionFactory = config.buildSessionFactory();
- Session session = sessionFactory.openSession();
- User user1 = new User();
- user1.setName("shenbin");
- Room room1 = new Room();
- room1.setAddress("NTU-M8-419");
- user1.setRoom(room1);
- User user2 = new User();
- user2.setName("chanyan");
- Room room2 = new Room();
- room2.setAddress("NTU-M8-418");
- user2.setRoom(room2);
- Transaction tx = session.beginTransaction();
- session.save(user1);
- session.save(user2);
- tx.commit();
- Room room = (Room) session.load(Room.class, new Integer(1));
- System.out.println(room.getUser().getName());
- session.close();
- sessionFactory.close();
- }
- }
A.主鍵關聯
DDL:
- CREATE TABLE user (
- id INT(11) NOT NULL auto_increment PRIMARY KEY,
- name VARCHAR(100) NOT NULL default ''
- );
- CREATE TABLE room (
- id INT(11) NOT NULL auto_increment PRIMARY KEY,
- address VARCHAR(100) NOT NULL default ''
- );
Room和User類同上。
Room.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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.hb3.pack_18.model.Room" table="room">
- <id name="id" column="id">
- <generator class="foreign">
- <param name="property">user</param>
- </generator>
- </id>
- <property name="address"
- column="address"
- type="java.lang.String"/>
- <one-to-one name="user"
- class="com.hb3.pack_18.model.User"
- constrained="true"/>
- </class>
- </hibernate-mapping>
User.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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.hb3.pack_18.model.User" table="user">
- <id name="id" column="id" type="java.lang.Integer">
- <generator class="native"/>
- </id>
- <property name="name" column="name" type="java.lang.String"/>
- <one-to-one name="room"
- class="com.hb3.pack_18.model.Room"
- cascade="all"/>
- </class>
- </hibernate-mapping>
測試代碼:
- package com.hb3.pack_18;
- import java.io.IOException;
- import java.sql.SQLException;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import com.hb3.pack_18.model.Room;
- import com.hb3.pack_18.model.User;
- public class BusinessService {
- public static void main(String[] args) throws IOException, SQLException {
- Configuration config = new Configuration().configure();
- SessionFactory sessionFactory = config.buildSessionFactory();
- Session session = sessionFactory.openSession();
- User user1 = new User();
- user1.setName("chanyan");
- Room room1 = new Room();
- room1.setAddress("NTU-M8-419");
- user1.setRoom(room1);
- room1.setUser(user1);
- User user2 = new User();
- user2.setName("shenbin");
- Room room2 = new Room();
- room2.setAddress("NTU-M8-418");
- user2.setRoom(room2);
- room2.setUser(user2);
- Transaction tx = session.beginTransaction();
- session.save(user1);
- session.save(user2);
- tx.commit();
- session.close();
- sessionFactory.close();
- }
- }
ExtJS教程- Hibernate教程-Struts2 教程-Lucene教程