`
jianchen
  • 浏览: 343347 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
《三》混合使用“一个类继承体系一张表”和“每个子类一张表” 比如上面的例子,worker类可能属性很少,而farmer属性却很多,把两者都与person放在同一张表中,则显得表的 结构不是很合理,会有很多字段是null。所以我们可以 ...
《二》每个子类映射到一张表(joined-subclass) 配置文件修改为: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping packa ...
hibernate的继承映射 《一》一张表映射一棵继承树 使用discriminator(鉴别标志) 类Worker和Farmer都继承自Person 类Person的源代码如下: package hibernate.extend; public class Person { private int id; private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = ...
级联和关系维护 Cascade 用来说明当对主对象进行某种操作时,是否对其关联的从对象也作类似的操作,常用的cascade:none,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many).一般对many-to-many,many-to-many不设置级联,在<one-to-one>和<one-to-one>中设置级联。 inverse表示“是否放弃维护关联关系 ”(在java里两个对象产生关联时,对数据库表的影响),在one-to-man ...
hibernate中的集合类型 引入: Hibernate可以持久化以下java集合的实例, 包括java.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.List, 和任何持久实体或值的数组。类型为java.util.Collection或者java.util.List的属性还可以使用"bag"语义来持久。 警告:用于持久化的集合,除了集合接口外,不能保留任何实现这些接口的类所附加的语义(例如:LinkedHashSet带来的迭代顺序)。所有的持久化集合,实际上 ...
组件映射 关联的属性是个复杂类型的持久化类,但不是实体即:数据库中没有表与该属性对应,但该类的属性要持久保存的。 对于单表的对象细分,在hibernate中可借助Component节点的定义完成。 何谓Component?从名字上来看,既然称之为组件,则其必然是从属于某个整体的一个组成部分。在hibernate语义中,我们将某个实体对象中的一个逻辑 组成成为Component。 component与实体对象的根本差别,就在于Component没有标识,它作为一个逻辑组成,完全从属于实体对象。 示例: <component name="userName"> ...
多对多关联关系的映射 在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型;hibernate会为我们创建中间关联表,转换成两个一对多。 核心配置:   <set name="ss" table="teacher_student">         <key column="teacher_id"></key>         <many-to-many class="Student" column="student_id ...
基于主键的一对一关联 Person类和IdCard,一对一映射。 person的属性为:id,name,idCard IdCard的属性为:id,usefulLife,person 由于身份证和人是一对一的,身份证的id和人的id可以相同。可以使得idcard的id的产生与person保持一致。主从对象通过主键关联起来。 类Person: public class Person { private int id; private String name; private IdCard idCard; public int getId() { return id; ...
jianchen 写道 当你确信方法的使用者会处理你的方法抛出的异常时,可以使用编译时异常。不处理编译时异常,程序编译不能通过。 而运行时异常给了方法的调用者以选择,他可以选择处理,也可以不处理。处理的话,进行c ...
以下内容摘自深入浅出hibernate 在编写代码的时候,尽量将POJO的getter/setter方法设定为public,如果设定为private,protected,hibernate将无法对属性的存取进行优化,只能转而采用传统的反射机制进行操作(hibernate3中进行了局部改进),这将导致大量的性能开销(特别是在IBM JDK以及1.4之前的sun JDK版本中,反射带来的系统开销相当可观。) 级联关系设置为all。 级联(cascade)在Hibernate映射关系中是个非常重要的概念。它指的是当主控方执行操作时,关联对象(被动方)是否执行同一操作。如对主控对象调用save-up ...
jdk文档: 写道 动态代理类(以下简称为代理类)是一个实现在创建类时在运行时指定的接口列表的类,该类具有下面描述的行为。 代理接口 是代理类实现的一个接口。代理实例 是代理类的一个实例。 每个代理实例都有一个关联的调用处理程序 对象,它可以实现接口 InvocationHandler。通过其中一个代理接口的代理实例上的方法调用将被指派到实例的调用处理程序的 Invoke 方法,并传递代理实例、识别调用方法的 java.lang.reflect.Method 对象以及包含参数的 Object 类型的数组。调用处理程序以适当的方式处理编码的方法调用,并且它返回的结果将作为代理实例上方法调用的结 ...
以下摘自深入浅出hibernate: DAO模式中,数据库访问层实现被隐藏到Data Accessor中,前面说过,DAO模式实际上是两个模式的组合,即Data Accessor和domain Object模式。 何谓Data Accessor?即将数据访问的实现机制加以封装,于数据的使用 ...
1, oracle数据库中,user是关键字,如果用户的表名为user会引起冲突。采取的方法主要有两种: ①如果可以修改表名,最好改变表名为tuser或其他的名字,免得引起麻烦。 ②如果表名不能修改,那么可以在配置文件中加上反引号,让oracle把user当做字符串处理,而不是关键字。 如下: <hibernate-mapping package="hibernatetest"> <class name="User" table="`user`"> <id name=" ...
session 的几个主要方法: 1,save方法和persist方法的区别; 2,delete,删除对象 3,update,更新对象,如果数据库中没有记录,会出现异常。 4,get,根据ID查,会立刻访问数据库。 5,load,根据ID查,(返回的是代理,不会立即访 ...
  如果不希望使用默认的hibernate.cfg.xml 文件作为配置文件,我们也可以指定配置文件名: File file = new File("C:\\myhibernate.xml"); Configuration config = new Configuration().configure(file); <class name="ClassName" ...
Global site tag (gtag.js) - Google Analytics