版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*Hibernate**Hibernate*hibernateORMjava应用程序和关系数据库的中间件,这JDBC的封装,主要负责java对象的持久化.Hibernate编程步骤OracleOracle数据库方言:org.hibernate.dialect.OracleDialectjdbcdriverjarsthirdpartyjarsuserdbyhibernatedatabasedriver tablename Class tableClassralationship tableralationship一个实体对应一个xml文件hibernate3.jar-hibernatejdbcdriverjarsthirdpartyjarsuserdbyhibernate2classpathhibernatehibernate.cfg.xml文件,databasedriver 3、htm.xml描述的是那些内容? tablename Class tableClassralationship tableralationship4hibernate.cfg.xml中需要配置那些信息A、dialectSQL语句。xml文件dao java.sql.date类型:Date.valueOf(“2006-12-1Configuration(用于解析配置文件Configurationconfig=new2ConfigurationSessionFactory(线程安全的重量级组件)。Config=config.configure();SessionFactory=SessionFactoryBean的静态初始化代码块中数据库只对应一个SessionFactory。2、一个session对应一个数据库。此对象的生命周期很短,他隐藏了JDBCTransaction工厂。他会持有一个针对持久化对象HibernateSession代表内存空间,是一个线程不安全的对象,SessionsessionsessionFactory.openSession();4、通过Session取得事务对象。Transactiontrans=session.beginTransaction();5、通过session与数据库进行会话。session.save(objecto);session.update(objecto);改session.get(Classclazz,Serializableid);根据Id查找对象session.createQuery(Stringsql);HqlQuery7、关闭Session1、SessionConnectionProvider(JDBC的3SessionFactorySessionSessionsessionsessionFactory.openSession();4Session取得事务对象。Transactiontrans=5sessionsession.save(objecto);session.delete(objecto);删,该对象只要有主健值就可以了。session.update(objecto);改session.get(Classclazz,Serializableid);根据Id查找对象session.createQuery(Stringsql);HqlQuery7Session1、SessionConnectionProvider(JDBC的3、该类的实例代表一个应用程序中JavaSQL数据库映射的完整而来。可以看作是一个SessionFactory的工厂。Hibernate中自带ID的generator的含义:<idname="id"<generator注:对于MySql数据库使用递增序列时需要在建表时对主健指定为auto_increment<idname="id"<generator<paramname="sequence">序列名<idname="id"<generator有初始值。高低位通过一个特殊的算法产生一个唯一的id。<idname="id"<generator<param<param<paramsessionsession3、该类的实例代表一个应用程序中JavaSQL数据库映射的完整SessionFactory的工厂。HibernateIDgenerator的含义:1、identityMySql<idname="id"<generator<generator<generator<param<param<param5、sequencehiloidsequence注:对于MySql数据库使用递增序列时需要在建表时对主健指定为auto_increment2、sequenceOracle<idname="id"<generator<paramname="sequence">序列名Default.sequencehibernate_sequence<idname="id"<generatorid。<idname="id"<idname="id"<generator<param<param<idname="id"<generator2、javaBeanJavaBean中增加一个属性,即另外一个对象的引用,以汽车car和发动机Engine(一对一关系)为例:<class<classname="Car"<idname="id"column="id"<generatorclass="native"<propertyname="name"column="name"type="string"<one-to-onename="engine"class="Engine"Engine对象。<idname="id"<generator<param<param<idname="id"<generator7、foreignidHibernateone―to―oneJavaBeanHibernateone-to-one2、javaBeanJavaBean中增加一个属性,即另外一个对象的引用,3hibernateAone-to-oneforeign生成策略。carEngine(一对一关系)为例:<class<classname="Car"<idname="id"column="id"<generatorclass="native"<propertyname="name"column="name"type="string"<one-to-onename="engine"class="Engine"注:cascade="all"CarEnginebEngine.hbm.xml<class<classname="Engine"<idname="id"column="id"<generator<param<class<classname="Engine"<idname="id"column="id"<generator<param<property<propertyname="model"column="model"type="string"<one-to-onename="car"class="Car"注:constrained="true"EngineCarBone-to-oneproperty-refmany-to-oneJavaBeanHibernatemany-to-one12、javaBean中:一个对象包含另一个对象的一个引用,另一个对象包含这个对象的一组(set)引用。3hibernateset.key<class<classname="Car"<idname="id"column="id"<generatorclass="native"<propertyname="name"column="name"type="string"<one-to-onename="engine"class="Engine"property-ref="car"cascade="save-name="engine"cascade="save-update"表示增改CarEnginebEngine.hbm.xml<class<classname="Engine"<idname="id"column="id"<generatorclass="native"<propertyname="model"column="model"type="string"<many-to-onename="car"class="Car" 注:unique="ture"column="carid"enginecarid<class<classname="Car"<idname="id"column="id"<generatorclass="native"<propertyname="name"column="name"type="string"<one-to-onename="engine"class="Engine"property-ref="car"cascade="save-"cascade="save-update"表示增改CarEngine<classname="Engine"<id<classname="Engine"<idname="id"column="id"<generatorclass="native"<propertyname="model"column="model"type="string" many-to-manyJavaBean中如何体现,Hibernatemany-to-many关系。学生表(n)―――课程表2、javaBean中:两个对象相互包含对方一组引用的集合(set集合。3hibernatesave-update<class<classname="Order"<idname="id"column="id"<generatorclass="native"<propertyname="owner"column="owner"type="string"<propertyname="phone"column="phone"type="string"<propertyname="address"column="address"type="string" name="items"cascade="all-delete-orphan"<keycolumn="orderid"<one-to-manyclass="Item"cascade="all-delete-orphan":这个比较麻烦一点,我们先来看看把cascade设为allsession.delete(order)order记录的order_id设置为null。因此,如果想通过order.getItems.remove(item)删除对象,需要在已有级联的基础上加上orphanb、Item.hbm.xml<class<classname="Item"<idname="id"column="id"<generatorclass="native"<propertyname="product"column="product"type="string"<propertyname="amount"column="amount"type="integer"<many-to-onename="order"class="Order"<class<classname="Order"<idname="id"column="id"<generatorclass="native"<propertyname="owner"column="owner"type="string"<propertyname="phone"column="phone"type="string"<propertyname="address"column="address"type="string" name="items"cascade="all-delete-orphan"<keycolumn="orderid"<one-to-manyclass="Item"cascade="all-delete-orphan":这个比较麻烦一点,我们先来看看把记录的order_id设置为null。因此,如果想通过order.getItems.remove(item)删除对象,需要在已有级联的基础上加上b、Item.hbm.xml<class<classname="Item"<idname="id"column="id"<generatorclass="native"<propertyname="product"column="product"type="string"<propertyname="amount"column="amount"type="integer"<many-to-onename="order"class="Order"a.a.Student.hbm.xml<classname="TarenaClass"<idname="id"column="id"<generatorclass="native"<setname="courses"table="class_course"<keycolumn="classid"<many-to-manyclass="TarenaCourse"column="courseid"JavaBean2javaBean中:A类extendsB3hibernate中:joined-JavaBean2javaBean中:A类包含B类3hibernatecomponentnoneone-to-oneonesave-update:在save()或update()时使用及联。allsave、update、delete。delete-orphan:hibernate删除。many-to-one:allsave-updatemany-to-many:save-updateHibernate中的加载策略:ACa.a.Student.hbm.xml<classname="TarenaClass"<idname="id"column="id"<generatorclass="native"<setname="courses"table="class_course"<keycolumn="classid"<many-to-manyclass="TarenaCourse"column="courseid"JavaBean2javaBean中:AextendsB2javaBean中:A类包含B类noneone-to-onesave-update:在save()或update()时使用及联。delete:删除主对象,自对象也一起删除,适用于多对一。all:包save、update、delete。delete-orphan:hibernate删除。many-to-one:allsave-updatemany-to-many:save-updateHibernate中的加载策略:HibernateHibernate1、Transient 2、Persistent持久化对象实例有一个主健值作为其数据库标识,与PersistenceManageSession相关联。ORM对于应用他是隐藏的。Hibernate的策略时尽可能晚的更新数据库,Hibernate内连接:内连接:fromOrderojoin外连接:fromOrderoleftjoin预先抓取:fromOrderoleftjoinfetch查找:selectufromUseruwhereu.id=:idselectsysdatefromdual; fromUseruwhereuid=:idforforupdate表示对查询出的记录需要进行更新操作,因此需要对该记录加dynamic-update=“true”,3、Datached sessionPersistencemanagerHibernate中的批量更新策略:30~50Hibernate中对并发事务的处理:versio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程装饰设计工作总结
- 2025贝伐珠单抗超说明书用药专家共识课件
- 总体百分位数的估计课件2025-2026学年高一下学期数学人教A版必修第二册
- 2026年氧化锌靶材行业分析报告及未来发展趋势报告
- 2026年公道杯行业分析报告及未来发展趋势报告
- 2026年眼镜王蛇养殖行业分析报告及未来发展趋势报告
- 重症监护室感染源控制优化策略2026
- 2026年牛羊绒行业分析报告及未来发展趋势报告
- 滨州市博兴县(2025年)招聘协管员考试真题及答案
- 2026年通信应急演练试题及答案
- 人教版 (2019)必修1《分子与细胞》第2节 细胞器之间的分工合作表格教案
- 2026年企业主要负责人和安全管理人员安全培训题库及答案
- 2026年2026年浙江省名校高三语文第二次联考试卷附答案解析新版
- 中国资产评估协会中国资产评估协会资产评估技术案例汇编2025年
- 2026年小学生气象知识竞赛题库及实战解析
- 2026年中国化工经济技术发展中心招聘备考题库及完整答案详解一套
- 2026年卫星互联网全球连接报告及未来五至十年通信基建报告
- GB 18280.1-2025医疗产品灭菌辐射第1部分:医疗器械灭菌过程的开发、确认和常规控制要求
- 2025年生猪屠宰兽医卫生检验人员考试题库(含答案)
- 时尚穿搭培训课件
- 入门品牌策划方案
评论
0/150
提交评论