组件映射配置
2013-09-11 10:59
274 查看
组件的映射也不常见,把对象粒度分的更细了,但是组件和宿主还是在一张表里,这样更加面向对象了,注意配置id的配置选项,组件需实现序列化接口
1,Employee.java
2,EmployeeId.java
3,Employee.hbm.xml
4,单元测试
5,输出结果
6,如果不是主键的组件,只需要变动一下映射文件里的配置如下
1,Employee.java
package com.model; import java.io.Serializable; public class Employee implements Serializable{ private EmployeeId employeeId; private String address; private int age; public EmployeeId getEmployeeId() { return employeeId; } public void setEmployeeId(EmployeeId employeeId) { this.employeeId = employeeId; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2,EmployeeId.java
package com.model; import java.io.Serializable; public class EmployeeId implements Serializable{ private String empNo; private String empName; public String getEmpNo() { return empNo; } public void setEmpNo(String empNo) { this.empNo = empNo; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } }
3,Employee.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.model"> <class name="Employee" table="employee"> <composite-id class="EmployeeId" name="employeeId"> <key-property name="empNo"></key-property> <key-property name="empName"></key-property> </composite-id> <property name="address" column="address"></property> <property name="age" column="age"></property> </class> </hibernate-mapping>
4,单元测试
@Test public void testEmployee(){ Session s = HibernateUtil.getInstance().getSession(); s.beginTransaction(); //添加员工 EmployeeId eid = new EmployeeId(); eid.setEmpNo("02"); eid.setEmpName("name02"); Employee e = new Employee(); e.setEmployeeId(eid); e.setAddress("sdfdf"); e.setAge(20); s.save(e); //查询员工 EmployeeId eid2 = new EmployeeId(); eid2.setEmpNo("01"); eid2.setEmpName("name01"); Employee employee = (Employee) s.load(Employee.class, eid2); System.out.println(employee.getAddress()); s.getTransaction().commit(); s.close(); }
5,输出结果
sdfdf Hibernate: insert into employee (address, age, empNo, empName) values (?, ?, ?, ?)
6,如果不是主键的组件,只需要变动一下映射文件里的配置如下
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.model"> <class name="Employee" table="employee"> <!-- <composite-id class="EmployeeId" name="employeeId"> <key-property name="empNo"></key-property> <key-property name="empName"></key-property> </composite-id> --> <id column="id" name="id"> <generator class="native"></generator> </id> <component name="employeeId" class="EmployeeId"> <property name="empNo" column="empNo"></property> <property name="empName" column="empName"></property> </component> <property name="address" column="address"></property> <property name="age" column="age"></property> </class> </hibernate-mapping>
相关文章推荐
- ORM组件 ELinq (五)-映射配置之XML
- ORM组件 ELinq (三)-映射配置之Attribute
- ORM组件 ELinq (二) 映射配置之Table
- 百度UEditor 上传组件 使用虚拟路径映射配置
- hibernate中组件映射配置详细解析
- ORM组件 ELinq (四)-映射配置之FluentAPI
- 不入流的控件关系映射组件
- yii2项目实战-用户管理之user组件的配置
- Hibernate组件映射
- 角色和权限Hibernate实体映射配置
- Hibernate学习笔记—映射文件配置
- 关于在reactjs项目中如何用webpack配置组件按需加载
- Mybatis使用generator自动生成映射配置文件信息
- [翻译]WINCE6.0下配置BSP内存映射
- MyBatis Review——一对多关系映射配置
- MyBatis的Mapper XML映射文件配置解析
- nginx中文件路径映射配置注意事项:alias与root说明
- 日志组件logback的介绍及配置使用方法
- 11 映射-- 组件映射(人类与姓名类)
- [Linux.NET]Nginx 泛解析配置请求映射到多端口实现二级域名访问