- 浏览: 187919 次
- 性别:
- 来自: 青岛
-
文章分类
- 全部博客 (117)
- java基础知识 (17)
- 技术积攒 (9)
- Oracle技术 (4)
- JSP技术 (6)
- Spring技术 (15)
- Linux技术 (6)
- Hibernate技术 (24)
- JPA技术 (1)
- Struts技术 (1)
- Struts2技术 (6)
- javascript知识 (4)
- myeclipse 使用技巧 (3)
- JavaEE技术 (2)
- JSTL (1)
- javamail技术 (1)
- jaf 技术 (1)
- 测试方法 (1)
- web技术积攒 (1)
- tomcat事项 (5)
- mysql使用 (1)
- 趣味题目 (2)
- 技术词汇 (1)
- EJB3.0 (2)
- weblogic 使用说明 (1)
- CSS (1)
最新评论
-
chenhao_java:
知识点五:依赖注入-自动装配依赖对象 -
黑白配:
为什么没有看见三个附件呢?
JavaMail jsp发送邮件 html格式 -
chunchong:
真晕,这样怎么能行呢
JAVA中防止SQL注入攻击类的源代码 -
Rod_johnson:
学习了!真不错
Hibernate:类继承的实现方式(二)--父子类各自一个表 -
erchong2011:
恩 很不错 学习了 简单
jsp页面自动跳转方式
Hibernate对继承关系的对象的处理分为多种形式:
第一种:继承链上的所有对象存放在一个表中
这种方式的缺陷:每次增加一个子类都要改动表结构!!而且,增加的字段不能有非空约束
domain对象:
映射文件:
测试代码:
执行的sql语句:
查询的时候,不论你查询的是父类还是子类,都可以使用:
输出的语句
!!!!!!!!!!!体现出多态效果!!!!!!!!
第一种:继承链上的所有对象存放在一个表中
这种方式的缺陷:每次增加一个子类都要改动表结构!!而且,增加的字段不能有非空约束
domain对象:
public class Employee { private Integer id; private String name; public Employee(){} public Employee(String name){ this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class Skiller extends Employee { private String skill; public Skiller(){} public Skiller(String name,String skill){ super(name); this.skill = skill; } public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } }
public class Driver extends Employee { private Integer driverYears; public Driver(){} public Driver(String name,Integer driverYears){ super(name); this.driverYears = driverYears; } public Integer getDriverYears() { return driverYears; } public void setDriverYears(Integer driverYears) { this.driverYears = driverYears; } }
映射文件:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.hibernate.inherit1"> <class name="Employee" table="employee" discriminator-value="0"> <id name="id" unsaved-value="-1"> <generator class="native" /> </id> <discriminator column="type" type="string"/> <property name="name"/> <subclass name="Skiller" discriminator-value="1"> <property name="skill"/> </subclass> <subclass name="Driver" discriminator-value="2"> <property name="driverYears"/> </subclass> </class> </hibernate-mapping>
测试代码:
public static void main(String[] args) { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Employee employee = new Employee("employee name"); Skiller skiller = new Skiller("skiller name","play game"); Driver driver = new Driver("driver name",30); session.save(employee); session.save(skiller); session.save(driver); tx.commit(); session.close(); }
执行的sql语句:
Hibernate: insert into employee (name, type) values (?, '0') Hibernate: insert into employee (name, skill, type) values (?, ?, '1') Hibernate: insert into employee (name, driverYears, type) values (?, ?, '2')
查询的时候,不论你查询的是父类还是子类,都可以使用:
Employee employee = (Employee)session.get(Employee.class, 3); System.out.println(employee.getName()); Employee employee = (Employee)session.get(Driver.class, 3); System.out.println(employee.getName());
输出的语句
Hibernate: select driver0_.id as id0_0_, driver0_.name as name0_0_, driver0_.driverYears as driverYe5_0_0_ from employee driver0_ where driver0_.id=? and driver0_.type='2'
!!!!!!!!!!!体现出多态效果!!!!!!!!
发表评论
-
关于Hibernate一个配置参数hibernate.hbm2ddl.auto
2010-03-02 08:43 1167<?xml version="1.0" ... -
Hibernate 复合主键
2009-09-25 09:13 1588[zt]hibernate复合主键 key words:hi ... -
映射文件class元素的dymanic-insert和dymanic-update的作用
2009-06-05 09:36 945SQL update语句是预先生成的,如果加上dynamic的 ... -
hibernate的各种保存方式的区别
2009-06-05 08:59 690hibernate的保存 hibernate对于对象的保存提供 ... -
Hibernate:缓存设置
2009-06-04 16:38 1042缓存是介于应用程序 ... -
one-to-many的懒加载及原理分析
2009-06-04 14:42 933如果是一对多,多对一,甚至是多对多那效率就差别大了!!如果一对 ... -
one-to-one的懒加载及原理分析
2009-06-04 13:57 1052Lazy=”” :告诉hibernate什么时候抓取 1 fa ... -
load方法的懒加载及原理分析
2009-06-04 11:09 1841懒加载: load方法与get ... -
Hibernate:类继承的实现方式(四)--每个具体类映射一张独立表
2009-06-04 10:58 1045这种方式会把继承链的所有类保持到数据库中单独的表中,而且标语表 ... -
Hibernate:类继承的实现方式(三)--鉴别器与内连接相结合
2009-06-04 10:49 1134当子类中有的有很多自己特有的属性,而部分子类有较少的自己的属性 ... -
Hibernate:类继承的实现方式(二)--父子类各自一个表
2009-06-04 10:41 1418将继承链中的各个类映射到数据库中的一个单独的表中 domai ... -
cascade和inverse
2009-06-04 09:10 1397Cascade与inverse这两个属性都用于一对多或者多对多 ... -
关联关系的级联操作
2009-06-03 17:17 878Cascade和inverse (Employee-Depar ... -
POJO对象与映射文件 : 集合映射
2009-06-03 15:36 1263集合属性大致有两种:第一种是单纯的集合属性,如像 List、S ... -
关联关系的总结
2009-06-03 14:50 802查询的时候出现sql语句的条数: Hibernate查询输出 ... -
将一个对象(组件)作为属性,但是不想建立这个表
2009-06-03 14:38 844如果对象的某个属性为一个对象,而且不想单独对该对象建立一个表, ... -
Hibernate:多对多
2009-06-03 14:10 1077Hibernate处理多对多的情况,在操作和性能方面都不太理想 ... -
Hibernate:一对一(2)
2009-06-03 11:11 816Hibernate处理一对一的另外一种方式是:将多对一加上唯一 ... -
Hibernate:多对一
2009-06-03 11:05 923Hibernate对多对一有两种,分为单向和双向。一般都是采用 ... -
Hibernate:一对一(1)
2009-06-03 10:40 833Hibernate中一对一关联两种处理方式之一:参照表主键参照 ...
相关推荐
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
8. 继承映射:Hibernate支持不同类型的继承映射策略,包括单表策略、每个具体类策略和类表策略。文档将详细介绍这些策略及其适用场景。 9. 操作持久化数据:包括如何使用Hibernate API来增加、删除、修改和查询...
通过`@Entity`注解标记一个Java类为实体Bean,`@Table`注解定义对应的数据库表。 - **乐观锁定版本控制** 通过`@Version`注解实现乐观锁,用于并发控制。 - **映射简单属性** 使用`@Column`注解映射字段到表的...
5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助...
5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助...
- **系统需求**:在开始创建一个支持 Hibernate 注解的项目之前,需要确保满足以下系统需求: - Java 开发环境(例如 JDK 1.8 或更高版本)。 - Hibernate 相关库文件(如 hibernate-core 和 hibernate-...
5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助...
5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库...
在多模块项目中,Gradle支持传递性依赖,这意味着如果你在一个模块中声明了对某个库的依赖,其他依赖这个模块的模块将自动获得这个依赖,无需再次声明。 Spring框架常与Gradle结合使用,特别是在实现Model-View-...
5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助...
1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory ...
1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. Hibernate入门 2.1. 前言 2.2. 第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant...
第3~9行定义了一个数据源,其实现类是apache的BasicDataSource,第11~25行定义了Hibernate的会话工厂,会话工厂类用Spring提供的LocalSessionFactoryBean维护,它注入了数据源和资源映射文件,此外还通过一些键值...
多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库...
1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory ...