您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Hibernate3.6学习笔记
课程内容1、HelloWorlda)Xmlb)Annotation2、Hibernate原理什么是O/Rmapping以及为什么要有O/Rmapping3、常见的O/R框架4、Hibernate基础配置5、Hibernate核心接口介绍6、对象的三种状态7、ID生成策略8、关系映射9、Hibernate查询(HQL)10、在Struts基础上继续完美BBS200911、性能优化12、补充话题13、笔记14、结合了struts和hibernate图:a)b)Spring贯穿整个过程,提倡面向接口,抽你编程;15、Hibernate帮我们屏蔽了关系这一层的逻辑;16、Hibernate工作17、Hibernate资源:,要注意Compatibilitymatrixa)Hibernate做日志的时候一般用到了slf4j这个框架,所以也要下载;(注意hibernate用到的是哪个版本就要下载哪个版本。)b)多读两个中文文档;reference下和\documentation\manual\zh-CN\html_single18、加入jar包,另外的方法,windwos—preferences—java—buildpath—UserLibraries(可以把你需要的包全部保存为一个UserLibraries,新建一个,保存。)19、Hibernate需要的jar包很多(最简单需要8个),可以建一个UserLibraries。a)下载的hibernate3.jar,最核心的b)在hibernate-distribution-3.3.2下libi.Bytecode生成二进制字节码需要的文件ii.Required必须的(里面的slf4j-api-1.5.8表示需要什么样的版本,这里只是相当于拿到了接口,并没有实现)iii.Optional可选的c)加入jdbcmysqljar包。d)e)加入slf4j-non-*.*.*.jar包f)20、配置文件默认放在src目录下面。一般名为:hibernate.cfg.xml。不会更改。内容在帮助文档中复制。21、一般不使用hibernate默认的连接池propertyname=connection.pool_size1/property,这个一般不用。22、hibernate数据库默认语言:!--SQLdialect官方语言--propertyname=dialectorg.hibernate.dialect.HSQLDialect/property,mysql方言要用org.hibernate.dialect.MySQLDialect,不指定是哪个版本的方言,会自动去查找。23、hibernate设置二级缓存:!--Disablethesecond-levelcache--propertyname=cache.provider_classorg.hibernate.cache.NoCacheProvider/property设置不可用。24、hibernate要不要把sql语句打印出来:propertyname=show_sqltrue/property25、26、hibernate要不要自动的生成建表语句:propertyname=hbm2ddl.autoupdate/propertyhbm2ddl.auto有四种取值:validate|update|create|create-drop,如果为create的时候数据库里面没有这个表,那就会自动创建,会覆盖先前的数据;如果为update那么如果在***.hbm.xml里面有不同个列,那么会修改表的结构,自动加上字段。当为create-drop时候,当程序运行完后,会将数据表drop掉,当为validata每次都会检查数据库表和xml文件能不能对应上。不论是Annotation方式还是xml方式都起做作用。Create不能创建数据库;update也会自动创建表;从理论上讲先建类,可以跨数据库,实际当中先表后类。(数据库优化。)27、ddl数据定义语言。Datadefinitionlanguage28、如何告诉hibernate这个类对应的表:建立Student的映射文件Student.hbm.xml和实体类放在一起。配置hibernate-mappingpackage=com.bjsxt.hibernate.model/hibernate-mappingpackage对应的映射文件包名。hibernate-mappingpackage=com.bjsxt.hibernate.modelclassname=Studenttable=student/class//name是实体类的名字,table是表名,如果没有配置table则表示表名与实体类的名字一样。数据库表名不区分大小写/hibernate-mapping29、idname=id(类的属性)column=_id(数据为列名)/id映射主键。30、其它属性:propertyname=name/property在class里面有一个成员变量叫name,表里面字段的名字也叫name。31、当我们有一上面的前提,但是还不知道如何去找strudent.hbm.xml配置文件mappingresource=com/bjsxt/hibernate/model/strudent.hbm.xml/32、Configurationcfg=newConfiguration();//用来读取配置文件的33、cfg.configure();这一步已经把默认hibernate.cfg.xml解析了。34、cfg.configure().buildSessionFactory();//产生一个session工厂。不能缺少configure();35、Sessionsession=sf.openSession();//打开一个新的选项。36、建立一个Annotation的HelloWorld,在hibernate3以后开始支持Annotation(重点)37、Jdbc只是一个标准,mysql.jsbc和oraclejdbc都是它的实现。38、用Annotation可以省去User.hbm.xml文件配置,改变注释;39、Hibernate.cfg.xml文件的mapping文件目录方式也改为类的方式,mappingclass=com.bjsxt.hibernate.model.Teacher/不再是mappingresource=com/bjsxt/hibernate/model/Student.hbm.xml/40、需要导入javax.persistence.entity,它只是一个标准,是是参考了hibernate。hiberante是它的实现。(在hibernate3.5后与核心包集成到了一起,方便多了。不用另外导入,如果是以前的版本需要另外导入Annotation类型的包。和hibernate-commonts-annotation.jar)41、@Entity是一个实体类,表示与数据库中的一个表对应,如果不写什么就说明数据库中有一个表名与类名相同。如果要指定表名,可以用@table来指名表名;42、Bean的所有非static非transient的属性都可以被持久化。@Id主建,加在getId()主建上面,约定成的。其它地方相当于加上了@Basic,如果不设置,默认加上了@Basic。除非你加上了@Transient,若加上@transient表示属性透明。存储的时候不进行存储.在xml文件里面不写就行。43、字段名和属性名不同时候用@Column(name=_name)也可以在***.hbm.xml文件里配置。44、最后在hibernate.cfg.xml里说明,有一个类加了注释,是一个实体类。45、在测试类中什么都不用改。获取hibernate.cfg.xml配置可以用Configurationcfg=newConfiguration();也可以用AnnotationConfiguration()后者已经过时。46、eclipse不给提示的设置方法,contentassist---activation–加上@符号47、Whitisandwhyo/rmapping(对象关系映射(ObjectRelationalMapping,简称ORM))48、Jdbc操作数据库很繁琐49、Sql语句写并不是面向对象的。50、可以在对象和关系表之间建立关联来简化编程。51、o/rmapping简化编程52、o/rmapping跨越数据库平台;53、hibernate模拟实现;视频006利用反射,但是hibernate内部不是用让反射。54、O/RMappingFrameWorks常用框架55、Hibernate56、Public57、Jdo58、Ibatis59、Jpa:是一个接口,在下面有很多统一的接口。JavaPersistenceAPI.JPA通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。a)意思统一天下60、Hibernate基本配置61、搭建日志环境并配置显示DDL语句。一般情况下命令行输出不会显示建表语句62、要配置org.hibernate.tool.hbm2ddl在所有的sqlddl语句执行时候为它们记录日志。了解slf4j系统。63、Slf4j看成是一个接口标准,下面有很多实现a)64、当使用log4配置日志系统的时候需要导入slf4j-log4j12-*.jar,再导入log4的实现包,log4j-1.2.16.jar的包。a)配置文件:hibernate-distribution-3.6.4.Final\project\etc\log4j.properties直接复制到src目录,进行简单修改就可以了。65、搭建Junit环境:a)加入Junit类库;b)写测试类。c)有一个Bug就是当配置文件写错的时候,Junit有时候会报错,有时候不报错,可以建立main方法测试。当成是javaApplication运行。d)有时候Junit不会报错,所以就需要手支trycatch捕获异常。66、propertyname=show_sqltrue/property显示sql语句a)propertyname=format_sqltrue/property显示格式化的sql语句;67、class68、name=ClassName69、table=tableName70、discriminator-value=discriminator_value71、mutable=true|false72、schema=owner73、catalog=catalog74、proxy=ProxyInterface75、dynamic-update=true|false76、dynamic-insert=true|false77、select-before-update=true|false78、polymorphism=implicit|explicit79、where=arbitrarysqlwherecondition80、persister=PersisterClass81、batch-size=N82、optimistic-lock=none|version|dirty|all83、lazy=(16)true|false84、entity(17)-name=EntityName85、check=(18)arbitrarysqlcheckcondition86、rowid=(19)rowid87、subsel(20)ect=SQLexpression88、abstra(21)ct=true|fals
本文标题:Hibernate3.6学习笔记
链接地址:https://www.777doc.com/doc-6077623 .html