Hibernate组件映射
来源:互联网 发布:Ubuntu命令行改中文 编辑:程序博客网 时间:2024/05/16 05:49
建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表中的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键关系,当每次查询员工信息时,都需要建立这两个表的连接。建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表Empinfo中。
EmpInfo实体类:
EmpHomeAddress实体类:
public class EmpInfo { private Integer eid; private String ename; private EmpHomeAddress ehome; public Integer getEid() { return eid; } public void setEid(Integer eid) { this.eid = eid; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public EmpHomeAddress getEhome() { return ehome; } public void setEhome(EmpHomeAddress ehome) { this.ehome = ehome; }}
public class EmpHomeAddress { private String ehomestreet; private String ehomecity; private String ehomeprovince; private String ehomezipcode; private EmpInfo empinfo; public String getEhomestreet() { return ehomestreet; } public void setEhomestreet(String ehomestreet) { this.ehomestreet = ehomestreet; } public String getEhomecity() { return ehomecity; } public void setEhomecity(String ehomecity) { this.ehomecity = ehomecity; } public String getEhomeprovince() { return ehomeprovince; } public void setEhomeprovince(String ehomeprovince) { this.ehomeprovince = ehomeprovince; } public String getEhomezipcode() { return ehomezipcode; } public void setEhomezipcode(String ehomezipcode) { this.ehomezipcode = ehomezipcode; } public EmpInfo getEmpinfo() { return empinfo; } public void setEmpinfo(EmpInfo empinfo) { this.empinfo = empinfo; }}
EmpInfo.hbm.xml映射文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.entity"><class name="EmpInfo" table="empinfo"><id name="eid" column="eid"><generator class="native"></generator></id> <property name="ename" column="ENAME" type="string"></property><component name="ehome" class="EmpHomeAddress"><parent name="empinfo"/><property name="ehomestreet" column="EHOMESTREET" type="string"></property><property name="ehomecity" column="EHOMECITY" type="string"></property><property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property><property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property></component></class></hibernate-mapping>
hibernate.cfg.xml大配置文件:
<hibernate-configuration> <session-factory> <!-- Database connection settings 数据库连接设置--> <!-- 驱动类 --> <property name="connection.driver_class">oracle.jdbc.OracleDriver</property> <!-- url地址 --> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <property name="connection.username">system</property> <property name="connection.password">1</property> <!-- SQL dialect (SQL 方言) --> <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- Echo all executed SQL to stdout 在控制台打印后台的SQL语句 --> <property name="show_sql">true</property> <!-- 格式化显示SQL --> <property name="format_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <!-- 支持getCurrentSession方法 --> <!-- <property name="current_session_context_class">thread</property> --> <!-- 关联小配置 --> <mapping resource="cn/entity/EmpInfo.hbm.xml" /> </session-factory></hibernate-configuration>
测试类:
public class Tests { Session session; Transaction tx; @Before public void initDate(){ session = HibernateUtil.getSession(); tx= session.beginTransaction(); } @After public void afterTest(){ tx.commit(); HibernateUtil.closeSession(); } /** * 组件的映射测试 */ @Test public void getTest(){ //创建一个员工对象 EmpInfo emp=new EmpInfo(); emp.setEname("火狐1"); //创建一个员工地址对象 EmpHomeAddress address=new EmpHomeAddress(); address.setEhomecity("北京"); address.setEhomeprovince("北京"); address.setEhomestreet("五道口"); address.setEhomezipcode("100000"); address.setEmpinfo(emp); emp.setEhome(address); session.save(emp); System.out.println("ok"); } /** * 查询 */ @Test public void selectTest(){ EmpInfo emp=(EmpInfo)session.load(EmpInfo.class, 1); System.out.println(emp.getEname()); }}
0 0
- Hibernate高级映射 --- 组件映射
- Hibernate组件映射
- hibernate中的组件映射
- hibernate之映射组件
- Hibernate组件映射
- Hibernate组件映射
- Hibernate 映射组件属性
- hibernate 组件映射小结
- 【转载】hibernate组件映射
- hibernate组件映射_XML
- hibernate组件映射_Annotation
- Hibernate组件映射
- Hibernate组件映射
- hibernate中组件映射
- Hibernate组件映射
- hibernate组件映射详解
- hibernate映射组件属性
- Hibernate Annotation组件映射
- 手把手教你制作那个风靡的flappy bird小游戏(一)
- Redis介绍以及安装(Linux)
- Java中的反射总结
- 让Eclipse工作在UTF-8环境下工作
- 苹果电脑装win7
- Hibernate组件映射
- DevExpress使用教程:常用Winform界面封装+慧都控件网【申明:来源于网络】
- 冒泡排序法及其优化
- 第51篇铅笔选择三种粗细(五)之图片实现及定住其它按钮线条 周二
- makefile经典教程
- C++类和对象--之五--运算符重载
- 常用的SQL的语句查询
- 阳光正好,微风不燥
- 手把手教你制作那个风靡的flappy bird小游戏(二)