zoukankan      html  css  js  c++  java
  • Hibernate读书笔记Hibernate的关联映射之组件属性关联关系

              先看User持久化类:

    public class Users {
    	private int id;
    	private Date birthday;
    	private Name name;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public Date getBirthday() {
    		return birthday;
    	}
    
    	public void setBirthday(Date birhday) {
    		this.birthday = birhday;
    	}
    
    	public Name getName() {
    		return name;
    	}
    
    	public void setName(Name name) {
    		this.name = name;
    	}
    
    }
    


              User持久化类中可以看到name不再是一个简单的String,而是一个类。在这里name就是一个组件属性,在name类中可以包含基本数据类型、字符型、日期型甚至是组件和关联实体。从User持久化类中我们看不出name是关联实体还是普通的组件属性。但是如果我们将Name映射成持久化实体,那么Name就是关联实体,如果不映射成持久化类,那么就是组件属性。这里我们不将Name映射成持久化类。

              Name类如下:

    public class Name {
    	private String firstName;
    	private String lastName;
    
    	public String getFirstName() {
    		return firstName;
    	}
    
    	public void setFirstName(String firstName) {
    		this.firstName = firstName;
    	}
    
    	public String getLastName() {
    		return lastName;
    	}
    
    	public void setLastName(String lastName) {
    		this.lastName = lastName;
    	}
    
    }
    

            为了映射User类中的Name组件,映射文件中使用<component.../>元素来映射该主键元素。映射文件如下:

              User.hbm.xml

    <hibernate-mapping package="com.hibernate.domain">
    	<class name="Users">
    		<id name="id">
    			<generator class="native" />
    		</id>
    
    		<property name="birthday" />
    		
    		<!-- 映射组件元素 -->
    		<component name="name">
    			<!-- 映射组件的name属性指向包含实体 -->
    			<property name="firstName" column="first_name"/>
    			<property name="lastName" column="last_name"/>
    		</component>
    	</class>
    </hibernate-mapping>


              操作类如下:

    public class UserManager {
    
    	public static void main(String[] args) {
    		Session session = HibernateUtil.getSession();
    		Transaction tx = session.beginTransaction();
    		
    		Users users = new Users();
    		users.setBirthday(new Date());
    		Name name = new Name();
    		
    		name.setFirstName("first name");
    		name.setLastName("last name");
    		users.setName(name);
    		
    		session.save(users);
    		tx.commit();
    		session.close();
    	}
    
    }

     

    读李刚《轻量级Java EE 企业应用实战》

  • 相关阅读:
    前端git开发分支各种场景管理
    RxJS Subject学习
    微信小程序登陆流程(20200322)
    vue依赖收集的策略
    eggjs2.x版本异步获取config配置方案
    dubbo连接过程
    计算机中对流的理解
    Egg.js运行环境配置场景
    Promise和Observable的映射
    eggjs异常捕获机制
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752336.html
Copyright © 2011-2022 走看看