- 浏览: 250624 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (179)
- Spring3.0 (28)
- HIbernate3.5.6 (35)
- Struts2.1.8 (42)
- JSP (1)
- Servlet (0)
- JAVASE (16)
- JavaWeb (1)
- javaEE (0)
- SSH2整合 (0)
- EJB (0)
- Oracle (7)
- Ajax (7)
- Quartz作业调度框架 (6)
- jsValidationFramework (1)
- FCKeditor (1)
- ExtJS (29)
- JSF (0)
- JPA (0)
- JBoss Seam (0)
- JSON (0)
- Webservice (0)
- JQuery (1)
- Javascript (1)
- Css+DIV (0)
- Lunch (0)
- Linux (0)
- PHP (0)
- XML (1)
- Ibatis (0)
- DWR (0)
- DWZ (0)
最新评论
-
Nabulio:
good
Spring配置SessionFactory -
唤流年:
[color=red][/color] ...
Spring配置SessionFactory -
wangcl011:
Oracle通过数据泵网络导入另一个数据库,不生成DMP文件, ...
oracle命令导入dmp文件 -
rochou:
第一个Hibernate实现CRUD -
ningwuyu:
Entity 类是那个jar里面的
PropertyUtils MethodUtils用法
字段名 | 主键 | 类型 | 描述 |
id | pk | int | 员工编号 |
name | varchar(50) | 员工姓名 | |
department_id | fk | int | 所属部门编号 |
type | int | 所属员工类型 | |
skill | varchar(50) | 技能员工(type=1) | |
sell | int | 销售员工(type=2) |
package domain; import java.util.Set; public class Department { private int id; private String name; private Set<Employee> emps; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Employee> getEmps() { return emps; } public void setEmps(Set<Employee> emps) { this.emps = emps; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="domain"> <class name="Department" table="`department`"> <id name="id" column="`id`"> <generator class="native"></generator> </id> <properties name="name"></properties> <set name="emps"> <key column="depart_id"></key> <one-to-many class="Employee"/> </set> </class> </hibernate-mapping>
package domain; public class Employee { private int id; private String name; private Department department; public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package domain; public class Sales extends Employee { private int sell; public int getSell() { return sell; } public void setSell(int sell) { this.sell = sell; } }
package domain; public class Skiller extends Employee { private String skill; public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="domain"> <class name="Employee" table="`employee`" discriminator-value="0"> <id name="id" column="`id`"> <generator class="native"></generator> </id> <discriminator column="type" type="int"></discriminator> <properties name="name"></properties> <many-to-one name="department" column="depart_id"></many-to-one> <subclass name="Skiller" discriminator-value="1"> <property name="skill"></property> </subclass> <subclass name="Sales" discriminator-value="2"> <property name="sell"></property> </subclass> </class> </hibernate-mapping>
测试:
package test; import java.util.HashSet; import java.util.Set; import org.hibernate.Transaction; import org.hibernate.classic.Session; import dao.HibernateUtil; import domain.Department; import domain.Employee; import domain.Sales; import domain.Skiller; public class Extends { public static void main(String[] args) { add(); } static void add(){ Session session = null; Transaction tx = null; try { Department depart = new Department(); depart.setName("depart name 1"); Employee emp1 = new Employee(); emp1.setName("emp1"); emp1.setDepartment(depart); Skiller emp2 = new Skiller(); emp2.setName("emp2"); emp2.setSkill("skill"); emp2.setDepartment(depart); Sales emp3 = new Sales(); emp3.setName("emp3"); emp3.setDepartment(depart); emp3.setSell(100); Set<Employee> emps = new HashSet<Employee>(); emps.add(emp1); emps.add(emp2); emps.add(emp3); depart.setEmps(emps); session = (Session) HibernateUtil.getSession(); tx = session.beginTransaction(); session.save(depart); session.save(emps); tx.commit(); } catch (Exception e) { // TODO: handle exception }finally{ if(session != null){ session.close(); } } } }
发表评论
-
Hibernate 1+N 问题
2011-06-03 08:17 12271+N问题的描述:举例,多个主题(Topic)属于一个帖子( ... -
多对多双向关联
2011-06-02 21:38 1020老师和学生: Annotation配置: packa ... -
多对多单向关联
2011-06-02 21:28 832老师和学生: Annotation配置: pack ... -
一对多和多对一双向关联
2011-06-02 20:42 1031一个组有多个用户 一个用户只能属于一个组 在用户表里面有组的外 ... -
一对多单向关联
2011-06-02 19:10 844组和用户 一个组有多个用户,一个用户只能属于一个组: 表结 ... -
多对一单向关联
2011-06-02 18:56 835组和人员: 一个组有多个人员,一个人员属于一个组 在用户表里 ... -
关联关系的联合主键映射
2011-06-02 18:24 1048丈夫和妻子 其中妻子表的主键由id和name组成 ,丈夫和妻子 ... -
枚举映射和不映射的属性配置
2011-06-02 17:54 949import java.util.Date; impor ... -
一对一单双向主键关联-xml
2011-06-02 17:45 1221用户表和用户信息表: 规定:用户信息表中的id主键由用户表生 ... -
一对一双向外键关联
2011-06-02 17:15 966妻子和丈夫: 在丈夫表里面有妻子的外键 学生和学生证: ... -
一对一单向外键关联
2011-06-02 17:01 1107一对一单向外键关联 分为Annotation和xml方式: ... -
Configuration取配置文件 以及取得Session的两种方法的区别
2011-06-02 12:55 1086在得到SessionFactory的时候要先取得配置文件:Hi ... -
联合主键--Annotation
2011-06-02 12:23 1322联合主键Annotation配置方法有三种: 1.将组件类注 ... -
联合主键--xml
2011-06-02 11:41 1137需求: 在T_STUDENTS表中 要将ID和NAME联合作 ... -
Hibernate设置使用C3P0连接池
2010-12-18 16:37 9931.导入jar文件 2.修改hibernate.cfg.xm ... -
Hibernate设置使用Tomcat中的连接池
2010-12-18 16:31 10851.修改Tomcat的context.xml文件 <C ... -
hibernate.cfg.xml
2010-12-18 15:30 867<?xml version='1.0' encoding ... -
Session和SessionFactory的多线程问题
2010-12-06 15:20 1204Session:是非线程安全的,生命周期较短,代表一个和数据库 ... -
Hibernate的拦截器与监听器
2010-12-06 14:57 1069定义监听器并继承SaveOrUpdateEventListen ... -
Hibernate使用命名查询
2010-12-06 14:37 961命名查询:就是在配置文件里面定义好sql语句。 简单示 ...
相关推荐
Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了多种方式来处理继承关系的映射,其中一种就是"每个类都对应一张表"的策略。本文将深入探讨这种映射方式,以及如何在Hibernate中实现它。 首先,...
标题“14 继承(一)(整个继承树映射到一张表)”揭示了我们今天将探讨的主题——如何在数据库中通过ORM(对象关系映射)工具如Hibernate处理类的继承关系。 在Hibernate中,当一个类继承体系映射到数据库时,有几种...
总结来说,“每个子类一张表”的继承映射策略是Hibernate提供的一种处理继承关系的方法,它将类的继承结构映射到数据库的多个表中。这种策略适合于子类具有大量特有属性的情况,但需要权衡可能带来的数据库设计复杂...
制作本文档的目的是将类的继承关系可以打印成书,直观了解继承关系图,同时还罗列出接口继承与实现关系图及枚举继承图(其中枚举放于最后两页)。 我已用该文档装订了一本书,作为自己学习java的参考,希望快速提供...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
在数据库设计中,对象的继承关系可以通过不同的数据模型来实现。Mybatis作为一款流行的Java持久层框架,支持使用原生JDBC来实现复杂的SQL操作。其中,表对象继承(即数据库表中的继承关系)可以通过多种方式实现。...
本主题聚焦于“用Hibernate映射继承关系”,我们将深入探讨Hibernate如何处理对象的继承层次结构,并将其映射到数据库中的表。 Hibernate支持多种继承策略,包括单一表继承(Single Table Inheritance)、联合表...
制作本文档的目的是将类的继承关系可以打印成书,直观了解继承关系图,同时还罗列出接口继承与实现关系图及枚举继承图(其中枚举放于最后两页)。 由于java api 1.6类及接口数量非常庞大,用一张图或若干张excel...
总之,“每个类分层结构一张表”是一种适合处理复杂类继承关系的映射策略,它在保持类结构清晰的同时,也带来了一定的数据库管理挑战。开发者应根据项目需求和数据规模来选择合适的继承映射方式。在实践中,结合使用...
标题中的“17 继承(四)每一个具体的类 映射到一张表”指出,我们将关注的是类继承在Hibernate中的映射策略。在传统的面向对象编程中,继承允许我们创建一个新类(子类)并继承父类的属性和方法,以此实现代码复用和...
单表映射策略将继承树中的所有类映射到同一张表中,通过一个额外的“识别字段”(通常称为`discriminator`)来区分不同类型的子类记录。 #### 示例代码 ```xml <!-- 其他属性映射省略 --> <!-- Notepad...
4. 继承映射为表继承或单表策略:继承可以通过创建一张包含所有继承类共有字段的主表,以及一个或多个包含特定属性的子表来实现,或者使用单表策略来表示继承结构。 四、映射实现方式 映射实现方式指的是将UML类图...
在Java的持久化框架Hibernate中,继承映射是处理对象模型中类继承关系的重要机制。本文将详细探讨“Hibernate继承映射的第一种策略:每个类对应一张表”的概念、实现方式以及其优缺点。 首先,我们需要理解...
本篇文章将详细探讨Hibernate继承映射的策略,特别是“每个具体类一张表”(Table Per Concrete Class)的映射方式。 在面向对象编程中,继承是常见的代码复用手段,但在关系型数据库中,这种概念并不直接对应。...
标题中的“15 继承(二)(每个子类扩展的属性单独保存在一张表中)”指的是在数据库设计中,特别是在使用对象关系映射(ORM)框架如Hibernate时,处理继承关系的一种策略——单表继承(Single Table Inheritance,STI)...
在软件开发领域,特别是使用面向对象编程语言如Java进行开发时,我们经常需要处理复杂的类继承关系。在ORM(Object-Relational Mapping)框架如Hibernate中,如何优雅地将这些继承关系映射到关系型数据库中,成为了一...
### 继承关系映射和Hibernate QBC查询 #### 继承关系映射 继承作为面向对象编程的一个核心概念,在Java等面向对象语言中极为常见。然而,在数据库中表示继承关系并不直观,因为数据库通常使用表格来存储数据,而...