hibernate使用 Hibernate是一个优秀的持久化框架,理念:程序员不再为任何数据库相关的操作而担心(不用管建库建表建约束,更不用管任何SQL语句)步骤:1、导入jar包,直接导入required目录下所有
Hibernate是一个优秀的持久化框架,理念:程序员不再为任何数据库相关的操作而担心(不用管建库建表建约束,更不用管任何SQL语句) 步骤: 1、导入jar包,直接导入required目录下所有包和数据库驱动包 2、配置hibernate.cfg.xml文件 3、编写实体类和实体类的映射文件 1、实体映射配置文件和基本实体关系 -->基本标签如下 -->class类 (name:映射的类名完全名,table:数据库的表名) -->id主键ID (name:主键属性名,column:列名) -->generator主键策略 class:策略名称 -->property属性 (name:属性名,column:列名) -->多 对 1 关系-->name 外键对象名 -->class 外键对象类完全限定名 -->cascade 关联操作(all,save-update,delete,none) -->all 所有情况下均进行关联操作。 -->none 所有情况下均不进行关联操作。这是默认值。 -->save-update 在执行save/update/saveOrUpdate时进行关联操作。 -->delete 在执行delete时进行关联操作。 -->insert 添加操作时候写入SQL语句中(true,false) -->update 修改操作时候写入SQL语句中(true,false) -->column 当前表的外键ID -->1 对 多关系 -->set name:实体类集合属性名 table:关系表名称 order-by:排序列 可加desc -->key column 外键ID,1的外键ID -->one-to-many class 外键对象 -->list -->key column 外键ID,1的外键ID -->list-index column 索引列名(来源于查询的表,不可重复,也是list存放的位置) -->one-to-many class 外键对象 -->inverse:关系由谁来维护,true对方维护(一方维护),false自己维护(多方),当关系发生变化是否进行修改操作 -->多 对 多关系 -->需要一张关系表来维护 -->set name:实体类集合属性名 table:关系表名称 -->key column 当前表对应关系表的外键ID -->many-to-many class多的实体类 column多方的外键关系列名 -->一 对 一 主表关系 --> -->一 对 一 从表关系 --> 2、Hibernate三种状态 1、临时状态 没有被session管理 2、持久状态 被session管理 3、游离状态 曾经被session管理(在提交的时候,也会提交到数据库) 3、Hibernate的基本方法 1、save 保存对象 2、update 修改对象,ID数据库必须存在 3、saveOrUpdate 如果主键为NULL就执行save,否则执行update 4、delete 删除对象,根据ID删除,或者根据HQL语句删除 5、merge 和saveOrUpdate类似,如果数据库没有ID相同的就save,否则就update -->不需要设置主键ID为NULL,返回当前添加的对象实例(持久状态),添加的参数对象为临时状态 4、Hibernate两种加载方式 1、get -->即时加载 get时就从数据库查询 2、load-->延迟加载 load时并没从数据库查询,使用时才从数据库查询(默认的关联关系查询都是延迟加载) 5、HibernateHQL语句 Hibernate自带的一种面向对象的查询语句 查询以类名和属性名为条件,类名=表名,属性名=列名 参数形式 -->以 ? 号的方式,直接使用query.setParameter(参数位置(从0开始), 值); -->以 :name 号的方式,直接使用query.setParameter("name", 值); -->以 :name 号的方式,可使用query.setProperties(info),info实体类属性必须和:name名称一致 分页查询 -->Query.uniqueResult 查询总条数 -->Query.setFirstResult 从第几条数据开始查询,从零开始,不包含起始位置的数据 -->query.setMaxResults() 查询多少条记录 6、Hibernate缓存 1、一级缓存(Session级别) -->使用evict或clear清理缓存 2、二级缓存(集群范围,可被所有session共享) 3、查询缓存(基于二级缓存) -->生命周期:当关联的表发生修改,查询缓存的生命周期结束 使用反向工程创建实体类 jboss:插件官网http://tools.jboss.org/ 1、插件安装http://download.jboss.org/jbosstools/updates/stable/luna/