欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hibernate 一对一关联 映射配置

程序员文章站 2022-04-16 08:53:49
...

最近做项目,用到hibernate框架.. 项目架构为Spring2.5+Hibernate 3.32+JSF +OS Workflow 整合的一个框架..

本来是Ibatis框架做, 因为OS Workflow工作流 官方 只整合 Hibernate框架的实现,没有与ibatis框架.进行整合.

 

 

只能用Hibernate了.. 好久没用这个Hibernate了.感觉都有点生疏..

下面写一个one to one的实例来巩固一下以前学习的知识:

 

User Model 类如下:

public class User implements java.io.Serializable {
	 private Integer id;
	 private String username;
	 private String password;
	 private String email;
	 private String course;
	 private Course mycourse;
 
   // Constructors
	 public Course getMycourse(){
	     return this.mycourse;  
	 }
	 
	 public void setMycourse(Course cc){
	     this.mycourse=cc;
 	 }
 	 
 	/** default constructor */
	 public User() {
	 
	 } 
	 
	 public User(Integer id, String username, String password, String email,String course) {
		  this.id = id;
		  this.username = username;
		  this.password = password;
		  this.email = email;
		  this.course = course;
	 }
}

 

 

 Course  Model 如下:

public class Course  implements java.io.Serializable {
     private Integer id;
     private String english;
     private String math;
     private String music;
     private String jsp;
     private String java;
     private User myuser;
     
    // Constructors
    public User getMyuser() {
    	return myuser;
    }
 
	  public void setMyuser(User myuser) {
	  	this.myuser = myuser;
	  }
	 
		 public Course() {
		 
		 } 
	 //getter 和  setter方法省略.
}

 

 

接下来,就是配置Hibernate 映射文件了.

 

1.User.hbm.xml代码

<hibernate-mapping>
    <class name="pack.java.demo.User" table="user" catalog="myproject" lazy="true">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="increment" />
        </id>
                <one-to-one name="mycourse" class="Course" 
                    fetch="join" cascade="all"  />
    </class>
</hibernate-mapping>

 

 

2.Course.hbm.xml代码如下:

<hibernate-mapping>
    <class name="pack.java.demo.Course" table="course" catalog="myproject" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="foreign" >
            <param name="property">myuser</param>
            </generator>
        </id>
        <property name="english" type="java.lang.String">
            <column name="english" length="24" />
        </property>
        <property name="math" type="java.lang.String">
            <column name="math" length="24" />
        </property>
        <property name="music" type="java.lang.String">
            <column name="music" length="24" />
        </property>
        <property name="jsp" type="java.lang.String">
            <column name="jsp" length="24" />
        </property>
        <property name="java" type="java.lang.String">
            <column name="java" length="24" />
        </property>     
        <one-to-one name="myuser" class="User" constrained="true"></one-to-one>
    </class>
</hibernate-mapping>

简单的一对一 映射文件就配置好了..接下来就是写方法,测试..