随笔分类 -  Hibernate

摘要:每棵类继承树一张表因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。这种机制就是,在表中添加一个字段, 用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤:父类用普通的<class>标签定义在父类中定义一个discriminator,即指定这个区分的字段的名称和类型如:<discriminator column=”XXX” type=”string”/>子类使用<subclass>标签定义,在定义subclass的时候,需要注意如下几点:Subclass标签的name属性是子类 阅读全文
posted @ 2013-05-30 12:22 FansZone 阅读(247) 评论(0) 推荐(0)
摘要:hibernate多对多关联映射(双向User--->Role)映射方法: <set name="users" table="t_user_role"> <key column="role_id" not-null="true"/> <many-to-many class="com.bjpowernode.hibernate.User" column="user_id"/> </set>需要注意:* 生成的中间表名称必须一 阅读全文
posted @ 2013-05-30 10:20 FansZone 阅读(142) 评论(0) 推荐(0)
摘要:hibernate多对多关联映射(单向User--->Role)具体映射:User.hbm.xml 1 <class name="com.bjpowernode.hibernate.User" table="t_user"> 2 <id name="id"> 3 <generator class="native"/> 4 </id> 5 <property name="name"/> 6 <set name="ro 阅读全文
posted @ 2013-05-11 15:54 FansZone 阅读(148) 评论(0) 推荐(0)
摘要:一、hibernate一对多关联映射(单向Classes--->Student)一对多关联映射和多对一关联映射映射原理是一致的,都是在多的一端加入一个外键,指向一的一端它们的区别在于维护的关系不同: * 多对一维护的关系是:多指向一的关系,有了此关系,在加载多的时候可以将一加载上来 * 一对多维护的关系是:一指向多的关系,有了此关系,在加载一的时候可以将多加载上来 在一一端维护关系存在缺陷: * 因为多的一端Student不知道Classes的存在(也就是Student没有维护与Classes的关系) 所以在保存Student的时候关系字段classesid是为null的,如果将... 阅读全文
posted @ 2013-05-11 10:16 FansZone 阅读(234) 评论(0) 推荐(0)
摘要:一、hibernate一对一主键关联映射(单向关联Person----->IdCard)一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段了Person.hbm.xml 1 <class name="com.bjpowernode.hibernate.Person" table="t_person"> 2 3 <id name="id"> 4 5 <!-- 采用foreign生成策略,forgeign会取得关联对象的标识 --> 6 7 <generator class 阅读全文
posted @ 2013-05-10 19:51 FansZone 阅读(1612) 评论(0) 推荐(0)
摘要:实体类---表,采用<class>标签映射 实体类中的普通属性(不包括集合、自定义类和数组)---表字段,采用<property>标签映射注意:如果实体类的名称或实体类中属性的名称和数据库关键字重复,将会出现问题 可以考虑采用table属性和column属性对其进行重新命名实体类的设计原则: * 实现无参的默认的构造函数 * 提供一个标识 * 建议不要使用final修饰实体类 * 建议为实体类生成getter和setter方法主要了解如下主键生成策略: * identity * sequence * uuid * native * assigned * ... 阅读全文
posted @ 2013-05-06 22:22 FansZone 阅读(153) 评论(0) 推荐(0)
摘要:junit简介: * 编写测试类XXTest,需要继承TestCase * 编写单元测试方法,方法名称必须为test开头,方法没有参数没有返回值,采用public修饰 * 最好采用单独的目录存放测试程序 * 建议使用断言 掌握HIbernate的CRUD操作必须掌握get和load方法的差别? * get不支持lazy,load在默认情况下支持lazy* get加载数据,如果不存在返回null,而load返回ObjectNotFoundException异常 Transeint * 没有被session管理 * 在数据库中没有与之匹配的记录 Persistent * 纳入session管理.. 阅读全文
posted @ 2013-04-12 19:41 FansZone 阅读(154) 评论(0) 推荐(0)
摘要:1、创建java项目2、创建User Library,加入依赖包 * HIBERNATE_HOME/lib/*.jar * HIBERNATE_HOME/hibernate3.jar * 加入数据库驱动(mysql驱动) 3、提供hibernate.cfg.xml文件,完成基本的配置 4、建立实体类User.java5、提供User.hbm.xml文件,完成实体类的映射6、将User.hbm.xml文件加入到hibernate.cfg.xml文件中7、编写工具类ExoprtDB.java,将hbm生成ddl,也就是hbm2ddl8、建立客户端类Client,添加用户数据到mysql最好加入如下 阅读全文
posted @ 2013-04-10 22:08 FansZone 阅读(204) 评论(0) 推荐(0)