尚学堂马士兵hibernate笔记(讲义)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

知识点终结:1新建项目2学习建立user-library-hibernate,并加入相应的jar包a项目右键-buildpath-configurebuildpath-addlibraryb选择user-library,在其中新建library,命命为hibernatec在该library中加入hibernate所需要的jar包hibernate3.3.2/hibernate3.jar/lib/required目录下的所有包6个Sl4j-nopjar3引入mysql的JDBC驱动包4在MYSQL中建数据库和相应的表student(id,name,age)5建立hibernate配置文件hibernate.cfg.xml参考文档中COPY,修改对应的数据库连接,6建立student类7建立映射文件Student.hbm.xml参考相应文档8将映射文件加到hibernate-cfg.xml中搭建日志环境并配置显示DDL语句slf的实现:slf4jnodep,log4j,jdkloggingapi,apachecommon-log.slf4j.nop.jar是slf-api.jar其相应的接口实现把slf的接口对到log4j的实现,在userlibrary中hibernate,把slf的实现slf4j-nop-1.5.8.jar去掉,添加log4j的实现log4j-1.2.15.jar,再添加一个slf-api和log4j转换器slf4j-log4j12-1.5.8.jar.把slf的接口转换成log4j的接口.最后添加一个log4j的配置文件log4j.properties利用HIBERNATE导出数据库建表//读取配置文件hibernate.cfg.xmlConfigurationcfg=newAnnotationConfiguration().configure();(有注解时使用AnnotationConfiguration),configure()可以手动指定配置文件名称.Configurationcfg=newConfiguration(),会默认读取hibernate.properties文件//创建schemaExport对象importorg.hibernate.tool.hbm2ddl.SchemaExport;SchemaExportexport=newSchemaExport(cfg);//创建数据库表export.create(true,true);对象映射(采用Annotation注解方式)1建表Createtableteacher(idintprimarykey,namevarchar(20),titlevarchar(20));2创建teacher类,并进行注解@importjavax.persistence.Entity;importjavax.persistence.Id;在bean中加注解@Entity,@Id(加在getId()上面)3在hibernate中加入annotation相应的jar包hibernate-annotations.jar/lib目录下加入相应的包ejb3-persistence.jar,hibernate-commons-annotations.jar注意:annotation文档中并没有提到hibernate-annotations.jar包4参考annotation文档建立对应的注解5在hibernate.cfg.xml中建立映射mappingclass=”com.xx.xx”/6示例//AnnotationConfiguration;Configurationcfg=newAnnotationConfiguration();SessionFactorysf=cfg.configure().buildSessionFactory();Sessionsession=sf.openSession();session.beginTransaction();session.save(t);//session.getTransaction().commit();session.close();sf.close();对象映射(采用配置文件方式)1在相应的类中建立对应的配置文件.例如Student类对应的配置文件Student.hbm.xmlhibernate-mappingpackage=com.modelclassname=Studenttable=Studentidname=idcolumn=id/idpropertyname=namecolumn=name/propertyname=agecolumn=age//class/hibernate-mapping2在hibernate.cfg.xml中添加该映射文件Student.hbm.xml即可!--建立对应的配置文件关联相应的数据库表--mappingresource=com/model/Student.hbm.xml/注意包名的写法3示例//读取配置文件hibernate.cfg.xmlConfigurationcfg=newConfiguration().configure();//创建SessionFactorySessionFactorysf=cfg.configure().buildSessionFactory();//创建sessionSessionsession=sf.openSession();session.beginTransaction();session.save(s);session.getTransaction().commit();session.close();sf.close();hibernate.cfg.xml配置hibernate.hbm2ddl.auto属性取值:validate|update|create|create-drop在sessionfactory创建时,自动检查数据结构,或者将数据库schema(表)的DDL导出到数据库,使用create-drop时,在显式关闭sessionfactory时,将drop掉数据库schema.validate加载hibernate时,验证创建数据库表结构create每次加载hibernate,重新创建数据库表结构create-drop加载hibernate时创建,退出是删除表结构update加载hibernate自动更新数据库结构表名和类名不同的情况时,对表名进行配置1在注解中importjavax.persistence.Table;@Table(name=”TableName”)2在XML文件中hibernate-mappingpackage=com.modelclassname=Teachertable=Teacher配置对应的table属性为相应的表名idname=idcolumn=id/id…/class/hibernate-mapping字段名和属性名相同,默认为对于annotation,如果什么注解都不写的话,相当于加了注解@Basic实体bean中所有的非static非transient的属性都可以被持久化,除非你将其注解为@Transient.所有没有定义注解的属性等价于在其上面添加了@Basic注解.通过@Basic注解可以声明属性的获取策略(fetchstrategy):对于XML文件中不用写column.字段名和属性名不同时Annotation:@column(name=”column_name”)加上相应的getXXX()方法上XML:column属性不需要persistence的字段importjavax.persistence.Transient;@Transient意思是说这个属性是透明的,不进行持久化,存储的时候不存进去映射日期和时间类型,指定时间精度Annotation:importjavax.persistence.Temporal;@Temporal(TemporalType.TIME)XML:指定typeclassname=Teachertable=Teacheridname=idcolumn=id/idpropertyname=nametype=time/type=time或date/class枚举类型的转换@Enumerated(EnumType.STRING)字段映射的位置推荐写在gexXXX方法上Hibernate映射类型Hibernate映射类型Java类型标准SQL类型大小和取值范围integer或者intint或者java.lang.IntegerINTEGER4字节longlongLongBIGINT8字节shortshortShortSMALLINT2字节bytebyteByteTINYINT1字节floatfloatFloatFLOAT4字节doubledoubleDoubleDOUBLE8字节big_decimaljava.math.BigDecimalNUMERICNUMERIC(8,2)8位charactercharCharacterStringCHAR(1)定长字符stringStringVARCHAR变长字符串booleanbooleanBooleanBIT布尔类型yes_nobooleanBooleanCHAR(1)(Y-N)布尔类型true_falsebooleanBooleanCHAR(1)(T-F)布尔类型2、Java时间和日期类型的Hibernate映射映射类型Java类型标准SQL类型描述dateutil.Date或者sql.DateDATEYYYY-MM-DDtimeDateTimeTIMEHH:MM:SStimestampDateTimestampTIMESTAMPYYYYMMDDHHMMSScalendarcalendarTIMESTAMPYYYYMMDDHHMMSScalendar_datecalendarDATEYYYY-MM-DD3、Java大对象类型的Hibernate映射类型映射类型Java类型标准SQL类型MySQL类型Oracle类型binarybyte[]VARBINARY(或BLOB)BLOBBLOBtextStringCLOBTEXTCLOBserializableSerializable接口任意实现类VARBINARY(或BLOB)BLOBBLOBclobjava.sql.ClobCLOBTEXTCLOBblobjava.sql.BlobBLOBBLOBBLOB在程序中通过Hibernate来保存java.sql.Clob或者java.sql.Blob实例时,必须包含两个步骤:1在一个数据库事务中先保存一个空的Blob或Clob实例。2接着锁定这条记录,更新上面保存的Blob或Clob实例,把二进制数据或文本数据写到Blob或Clob实例中HibernateSQL方言(hibernate.dialect)RDBMS方言DB2org.hibernate.dialect.DB2DialectDB2AS/400org.hibernate.dialect.DB2400DialectDB2OS390org.hibernate.dialect.DB2390DialectRDBMS方言PostgreSQLorg.hibernate.dialect.PostgreSQLDialectMySQLorg.hibernate.dialect.MySQLDialectMySQLwithInnoDBorg.hibernate.dialect.MySQLInnoDBDialectMySQLwithMyISAMorg.hibernate.dialect.MySQLMyISAMDialectOracle(anyversion)org.hibernate

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功