SessionFactory sessionFactory = new Configuration().configure().
hibernate:全自动映射 ORM框架,不需要自己手动去写SQL语句 mybatis:半自动ORM框架,需要自己手动去写SQL语句 hibernate以及mybatis区别 开发速度 二级缓存是 SesionFactory级别的缓存,从应用启动到应用结束有效。 Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。 MyBatis容易掌握,而Hibernate门槛较高。 Hibernate优势 Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。 Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。 Hibernate有更好的二级缓存机制,可以使用第三方缓存。
(1)引入jar包 (2)配置 (3)测试 1、引入jar包 引入mysql jar包mysql-connector-java-5.1.38-bin.jar 引入c3p0 jar包c3p0-0.9.1.2 -1.6.1.jarhibernate3.jarhibernate-jpa-2.0-api-1.0.0.Final.jarjavassist-3.12.0.GA.jarjta-1.1.jarslf4j-api DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org -- 3. > 3、测试 测试两方面:第一是能从数据库读取一条数据,第二是能向数据库保存一条数据 package com.rk.test; import org.hibernate.Session; import
} public void setWeight(float weight){ this.weight = weight; } } 所有类建一个表的映射文件 <hibernate-mapping /> <property name="thickness" column="thickness" type="float" /> </subclass> </class> </hibernate-mapping <hibernate-mapping package="alan.hbn.inheritance.entity"> <class name="Computer" abstract="true"> <property name="thickness" column="thickness" type="float" /> </union-subclass> </class> </hibernate-mapping > 每个类建一格表的配置文件 <hibernate-mapping package="alan.hbn.inheritance.entity"> <class name="Computer" table
发表评论 663 views A+ 所属分类:Hibrenate Hibernate框架应用步骤 ---- 引入hibernate所需jar包 ---- 1.创建实体类,(最好实现序列化接口 DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org /dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> </hibernate-mapping> ``` 3.测试hibernate配置 ``` public ).configure(); // 2.创建Session工厂 SessionFactory sessionFactory = configure.buildSessionFactory(); // 3. -- c3p0数据源 --> <property name="<em>hibernate</em>.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider
以下是用 hibernate的HQL(面向对象的查询语言)实现模糊查询的3种方式,其中方式一是这三中方式中最理想的方式,至少方式一可以有效的防止由于查询条 件中需要参数的增多导致的代码长度太长出现代码折行的情况
一对一的表关系用于: 1.分割一个含有有许多列的表 2.由于安全性的考虑而隔离了表的某一部分 3.存储一些很容易删除的临时数据,删除这些表就是删除了这些数据 4.存储只应用于主表的一个子集的信息 DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net hibernate 工具类 便于在测试代码中更好使用 hibernate。 = session.get(Course.class, 3); //让学生选课程3 s1.getSetCourses().add(c3);
相比spring3,spring4新特性如下: Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性—— hibernate升级 目前版本 hibernate3 由于以前项目,只有hibernate3.jar这一个,所以替换到它就ok。 升级版本hibernate4 ? ">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="<em>hibernate</em>.show_sql">true</prop </aop:config> 相关代码修改: 如果你之前的dao层是继承了HibernateDaoSupport,你只需要将引入的 import org.springframework.orm.hibernate3 .HibernateCallback; 修改为 import org.springframework.orm.hibernate4.HibernateCallback; 如果hibernate3中使用了
2.一级缓存应用: save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。 get()和load()。 3.二级缓存的管理: evict(Class arg0, Serializable arg1)将某个类的指定ID的持久化对象从二级缓存中清除,释放对象所占用的资源。 -- EHCache的配置,hibernate.cfg.xml --> <hibernate-configuration> <session-factory> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net /hibernate-mapping-3.0.dtd" > <hibernate-mapping> <class> <!
多对多的映射实现 一般多对多关联会拆分成两个一对多的关系来实现多对多关系,也可以通过hibernate提供的解决方案来实现。 其实hibernate的实现方式是通过中间表间接的实现了多对多关系,实际上也是将多对多拆分成两个双向的一对多关系。 -- key子标签中标明的被引用的本类对应表的字段,many-to-many子标签是表示关联类在中间表中对应引用字段的 --> </class> </hibernate-mapping> > 类继承关系映射 建表策略 1) 所有类建一个表 2) 只为具体类建表 3) 每个类建一个表。 3) 每个类建一个表,可以有效减少数据的冗余,减少字段,查询效率不很高。
常用的是共享主键策略来完成一对一关系的映射 User类的映射文件User.hbm.xml <hibernate-mapping package="alan.hbn.rel.o2o"> <class -- 标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围 name属性标明User类中的Address类的对象名,class标明其类型 --> </class> </hibernate-mapping > Address类的映射文件Address.hbm.xml <hibernate-mapping package="alan.hbn.rel.o2o"> <class name="Address > 外键策略来完成一对一关系的映射 User类的映射文件User.hbm.xml <<em>hibernate</em>-mapping package="alan.hbn.rel.o2o"> <class name > Address类的映射文件Address.hbm.xml <hibernate-mapping package="alan.hbn.rel.o2o"> <class name="Address
在V3中,做了不少改进,下面对将做简单扼要地介绍。 V3的特性: 1. 不再需要API Key 2. 指定sensor传感器参数,检测到用户当前位置 3. 版本管理 Google Maps JSAPI V3 - 基础知识 Google Maps JavaScript API V3 - 参考 示例程序: ? V3让人感觉Google彻底开放了,而且API的设计也改善了,在移动方面还需要改进,期待!
所有类建一个表的映射文件 <hibernate-mapping package="alan.hbn.inheritance.entity"> <class name="Computer" table <hibernate-mapping package="alan.hbn.inheritance.entity"> <class name="Computer" abstract="true"> > hibernate组件映射 组件不会生成唯一标识,但是也需要对应实体类。 hibernate中可以把一个类的对象当作一个属性组件来使用,并且在使用时会自动创建,所以同一组件对象是不会被两次引用的。 > hibernate的HQL(hibernate Query Language) HQL是hibernate的查询语言,他可以支持面向对象的查询。
项目采用shiro+struts2+spring+hibernate,事务配置采用声明式事务。
org.springframework.orm.hibernate3.HibernateTemplate 下表为hibernateTemplate中的常用方法。 在Spring整合Hibernate3开发时,我们可以通过两种方式来获得HibernateTemplate的支持。 Spring针对不同的数据访问方式,提供了不同的事务管理器,如下所示: 2.1 使用Hibernate3的事务管理器 这里讨论的是Hibernate3的事务管理器:orm.hibernate3 advice-ref="txAdvice"/> </aop:config> 3 Spring整合Hibernate并使用注解配置 3.1 Hibernate实体注解配置 (1)持久化实体注解 -- Hibernate Template --> <bean id="hibernateTemplate" class="org.springframework.orm.<em>hibernate</em><em>3</em>.HibernateTemplate
3.4.0 GA 得到:hibernate-annotations.jar hibernate-commons-annotation.jar ejb3-persistence.jar 数据库 DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN products) { 88 this.products = products; 89 } 90 91 } Product.java 1 package com.b510.examples; 2 3 descripton) { 85 this.descripton = descripton; 86 } 87 88 } 测试代码: HibernateTest.java 1 /** 2 * 3 ). 2 log4j:WARN Please initialize the log4j system properly. 3 Hibernate: 4 select 5
Hibernate框架的配置一般可以分为以下几个步骤: 1.添加基本的Hibernate Jar包 2.添加注解的Jar包 3.编写Hibernate.cfg.xml文件 4.编写POJO文件,并编写注释 一、导入基本的Hibernate Jar包 点击这里下载:http://pan.baidu.com/s/1gdf3K47 密码:siok 二、导入Hibernate Annotation 的Jar包 点击这里下载 :http://pan.baidu.com/s/1gdf3K47 密码:siok 三、编写Hibernate.cfg.xml文件 1 <? DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN 如果你用的是其他数据库,你可以点击这里查看相对应的Hibernate.cfg.xml文件:Hibernate 连接MySQL/SQLServer/Oracle数据库的hibernate.cfg.xml文件
3、ORM:(Object Relation Mapping)对象关系数据库的映射这是 Hibernate 框架的重点,也就是说将我们程序中的实体(bean,这里也叫 POJO)和数据库中的表进行映射。 大多数情况下特别是企业级应用,数据持久化往往也就意味将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。 工程,导入Hibernate的核心jar包、支持C3P0数据库连接池的jar包: c3p0-0.9.5.2.jar hibernate-c3p0-5.2.17.Final.jar org.hibernate hibernate-core 5.2.17.Final org.hibernate hibernate-c3p0 5.2.17.Final com.mchange c3p0 0.9.5.2 2 、创建Hibernate配置文件: org.hibernate.connection.C3P0ConnectionProvider 20 5 120
1.4 Hibernate的入门 1.4.1 Hibernate的入门 1.4.1.1 下载Hibernate的开发环境 Hibernate3.x Hibernate4.x Hibernate5 :Hibernate开发的可选的jar包 3.project :Hibernate 提供的项目 1.4.1.3 创建一个项目,引入jar包 1.数据库驱动包,2.Hibernate开发的必须的jar包,3.Hibernate引入日志记录包,4.C3p0连接池 ? SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存。是线程安全的对象。一个项目创建一个对象即可。 l hibernate配置C3P0连接池: <? -- 配置C3P0连接池 --> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider
方法3出现了一个奇怪错误~~ 1、Hibernate对于Access的支持 方法一: 下载两个jar包,一个是Access的JDBC驱动包;另一个是数据库方言包,里面有支持Access方言的类。 Hibernate描述文件可以是一个properties或xml 文件,其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描述文件。 DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration JDBC驱动程序 --> <property name="connection.driver_class"> sun.jdbc.odbc.JdbcOdbcDriver </property> 3、