hibernate2.实体之间如何体现关系你中有我我中有你_第1页
hibernate2.实体之间如何体现关系你中有我我中有你_第2页
hibernate2.实体之间如何体现关系你中有我我中有你_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

回Hibernate2orm框架,将会采用反向工程。Xml配置方式也要了解(和注解方式没啥区别<?xml<!DOCTYPEhibernate-mapPUBLIC"-//Hibernate/HibernateMapDTD3.0//EN"""><!--Generated2014-8-2421:59:33byHibernateTools3.4.0.CR1--<hibernate-map<idname="id"<columnname="ID"<generatorclass="assigned"<propertyname="name"<columnname="NAME"<setname="students"table="STUDENT"inverse="true"<columnname="class_id"</hibernate-map<?xml<!DOCTYPEhibernate-mapPUBLIC"-//Hibernate/HibernateMapDTD3.0//EN"""><!--Generated2014-8-2421:59:33byHibernateTools3.4.0.CR1--<hibernate-map<idname="id"<columnname="ID"<generatorclass="assigned"<propertyname="name"<columnname="NAME"<columnname="class_id"<propertyname="age"<columnname="AGE"</hibernate-map<?xml<!DOCTYPEhibernate-mapPUBLIC"-//Hibernate/HibernateMapDTD3.0//EN"""><!--Generated2014-8-2422:06:43byHibernateTools3.4.0.CR1--<hibernate-map<idname="id"<columnname="ID"<generatorclass="assigned"<propertyname="name"<columnname="NAME" <key<many-to-manyclass="com.entity.manytomany.UnderGraduate"</hibernate-map<?xml<!DOCTYPEhibernate-mapPUBLIC"-//Hibernate/HibernateMapDTD3.0//EN"""><!--Generated2014-8-2422:06:43byHibernateTools3.4.0.CR1--<hibernate-map<idname="id"<columnname="ID"<generatorclass="assigned"<propertyname="name"<columnname="NAME" <key<many-to-manyclass="com.entity.manytomany.Courses"</hibernate-map事务管回顾事务问(Read不可重复读(Unrepeatableread)–一个事务再次之前曾的数据,两次结果不一样。(可重复读)幻读(Phantomread)–一个事务执行一个查询两次,并且第二个结果集包括第一个结果集中不存在的记录。(序列化读)脏 ReadRepeatableHibernate如何设置级别1–未提交2–提4–可重复读mysql支8–串行读oracle,mysql均支持,取值8Hibernate在配置文件中设置级别<!--设置层次,控制事务的并发,缺省时ReadCommitted:2--<propertyHibernate因为封装了jdbcapi底层也是调用jdbcjta<!--<!--非管理环境:桌面应用,tomcat环境,<propertyname="transacton.factory_class"><!--管理环境,JTA<!--propertyname="transacton.factory_class">一般情况省略不写,代表采用jdbcjdbc事务,代码片段:Sessions=sessionFactory.openSession();Transactiontx=s.beginTransaction();jtajtajtaHibernateapi使用代码:publicvoidtransientToPersist(){Sessionses=sf.openSession();Transactiontx=//创建一个transientCoursec=newCourse("CoreC++","C++fundamental");//transient对象cpersistent对象ccid=(Long)ses.save(c);//persistentcdetached锁悲观锁 有个forupdate,比如select*fromstudentforupdate就锁住了这选中的行。当这些行commitrollback语句结束为止。HibernateLockMode.NONE–LockMode.WRITEHibernateInsertUpdateLockMode.READ–Hibernate记录时会自动获取LockMode.UPDGRADEforupdate锁定模描锁定模描select不管缓存中是否存在对象,总是通过select语句selectOracle/MySQL),就执行select...forupdateSybase),selectLockMode.UPGRADEOracleupdatenowaitselect...forupdatenowait,nowaitselectsession.get(Account.class,1,Accounta=session.get(Account.class,1);publicvoidSessionses=sf.openSession();Transactiontx=ses.beginTransaction();ses.lock(c,LockMode.UPGRADE);c.setName("CoreJava");c.setDescription("Javalanguage");ses.update(clock()方法,update()}publicstaticvoidmain(String[]args)throws//User/*Useruser=newUser();Sessionsession=HibernateUtils.getSession();Useru=(User)session.get(User.class,888,LockMode.UPGRADE);}}乐观锁 A此时读出数据(version=1,并从账户扣除余额(version=1(ersio=2(version=2Hibernate@Version注解映射Date类型,通常使用数值类型,Date类型可以作为修订时间的一个记录publicclassAccountextendsBaseEntity{privateStringuserName;privateDouble是0,这个时候,B提交的时候会拿目前自己的版本号跟数据版本比较,如果小于Hibernatecatch块里面决定你要做的事情。packageimportimportimportpublicclassTestHibernatepublicstaticvoidmain(String[]args)throwsException{Sessionsession=null;trysession=HibernateUtils.getSession();Useru=(User)session.get(User.class,888);newpublicvoid{Sessionsession=HibernateUtils.ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论