首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate学习札记(三)【配置详解】

2012-11-16 
Hibernate学习笔记(三)【配置详解】Hibernate配置翻译hibernate-mappingclass name项目路径 table库

Hibernate学习笔记(三)【配置详解】

Hibernate配置翻译

<hibernate-mapping><class name="项目路径" table="库中对应表名" schema="dbo" catalog="netoa">      <meta attribute="class-description">指定描述类的javaDoc</meta>      <meta attribute="class-scope">指名类的修饰类型</meta>      <meta attribute="extends">指定继承类</meta>         <id name="bgrkbh" type="long">            <column name="BGRKBH" precision="15" scale="0" sql-type="库中类型" check="BGRKBH>10"/>            <meta attribute="scope-set">指定类,类属性的getxxx(),setxxx()方法的修饰符             包括:static,final,abstract,public,protected,private            </meta>            <generator />        </id>         <property name="Class.fileName" type="long">                <column name="YSLX" precision="精度" scale="刻度" not-null="默认false" sql-type="数据库中类型"/>                附加属性不会影响Hibernate的运行行为                <meta attribute="field-description">指定描述类的javaDoc</meta>                指定描述类属性的javaDoc         </property></class> </hibernate-mapping>

?

<meta>元素属性

        属性                                                描述    class-description                            指定描述类的javaDoc    field-description                            指定描述类的属性javaDoc    interface                                    如果为true,表明生成接口而非类,默认false    implements                                   指定类所实现的接口    extends                                      指定继承的父类名    generated-class                              重新指定生成的类名    scope-class                                  指定类的修饰符,默认public    scope-set                                    指定set方法的修饰符,默认public    scope-get                                    指定get方法的修饰符,默认public    scope-field                                  指定类的属性的修饰符,默认private    use-in-toString                              如果为true,表示在toString()方法中包含此属性    gen-property                                 如果为false,不会在java类中生成此属性,默认true    finder-method                                指定find方法名

<column>元素属性

    name                 设定字段名字    length               设定字段长度    not-null             如为true,指名该字段不允许为null,默认false    unique               如为true,指名该字段具有唯一约束,默认false    index                给一个或多个字段建立索引    unique-key           为多个字段设定唯一约束    foreign-key          为外键约束命名,在<many-to-many><one-to-one><key><many-to-one>元素中包含                         foreign-key属性,在双向关联中,inverse属性为true的一端不能设置foreign-key    sql-type             设定字段sql类型    check                设定sql检查约束

用于控制insert or update 语句的映射属性

<property>元素的insert属性                如为false,在insert中不包含该字段,默认为true<property>元素的update属性                如为false,在update中不包含该字段,默认为true<class>元素的mutable属性                  如为false,等价于所有字段的update属性为false,默认为true<property>元素的dunameic-insert属性       如为true,表明动态生成insert语句,只有不为null,才会包含insert语句中,默认false<property>元素的dunameic-update属性       如为true,表明动态生成update语句,只有不为null,才会包含insert语句中,默认false<class>元素的dunameic-insert属性          如为true,表明等价于所有字段动态生成insert语句,只有不为null,才会包含insert语句中 ,默认false<class>元素的dunameic-update属性          如为true,表明等价于所有字段动态生成update语句,只有不为null,才会包含insert语句中 ,默认false

cascade属性

描述none                              在保存更新时,忽略其他关联对象,他是cascade默认属性save-update                       当通过Session的save(),update()以及saveOrUpdate()方法来保存或更新当前对象时,级联保存所有关联的新建的临时对象,并且级联更新所有关联的游离对象delete                            当通过session的delete()方法删除当前对象时,及联删除所有对象lock                              把游离对象加入缓存当中,关联对象也加入evict                             把持久化对象从缓存中移除,关联对象也移除refresh                           刷新当前缓存中对象,级联对象也会刷新all                               包含save-update、 delete、 evict、lock及refresh的行为delete-orphan                     删除所有和当前对象解除关联关系的对象all-delete-orphan                 包含all和delete-orphan

Hibernate映射类型,对应的java基本类型及对应的标准SQL类型

      Hibernate 映射类型               java类型                     标准SQL类型       integer或者int                  int                          INTEGER       long                            long                         BIGINT       short                           short                        SMALLINT       byte                            byte                         TINYINT       float                           float                        FLOAT       double                          double                       DOUBLE       big_decimal                     java.math.BigDecimal         NUMERIC       character                       char and string              CHAR       string                          string                       VARCHAR       boolean                         boolean                      BIT                   Hibernate映射类型,对应的java时间和日期类型及对应的标准SQL类型     映射类型           java类型                     标准SQL类型             描述      date       java.util.Date或者java.sql.Date        DATE         代表日期,YYYY-MM-DD      time       java.util.Date或者java.sql.Date        TIME         代表时间,形式为HH:MM:SS      timestamp java.util.Date或者java.sql.Timestamp   TIMESTAMP    代表日期和时间,YYYYMMDDHHMMSS      calendar   java.util.Calendar                     TIMESTAMP    同上   calendar_date java.util.Calendar                     DATE         代表日期,YYYY-MM-DD

?

?

JAVA大对象类型的Hibernate映射类型

   映射类型        java类型             标准SQL类型         MYSQL类型           ORALCE类型   binary           byte[]            VARBINARY(或BLOB)      BLOB                  BLOB   text             string               CLOB                TEXT                  CLOB   serializable  实现Serializable       VARBINARY(或BLOB)    BLOB                  BLOB                 接口任意一个java类   clob            java.sql.Clob          CLOB               TEXT                  CLOB               blob            java.sql.Blob          BLOB               BLOB                  BLOB
a Session session=sessionFactory.openSession();   Transaction tx=session.beginTransaction();   Object obj=new Object();   obj.setFile(Hibernate.createClob(" "));   session.save(obj);   session.flush();   //锁定这条纪录   session.refresh(obj,LocakMode.UPGRADE);   oracle.sql.CLOB clob=(oracle.sql.CLOB)obj.getFile();   //把长文本数据放入Clob中   Writer pw=clob.getCharacterOutputStream();   pw.write(longText);//longText标识长度超过255的字符串   pw.close();   tx.commit();   session.close();b InputStream in=this.getClass().getResourceAsStream("photo.gif");   byte[] buffer=new byte[in.available()];   in.read(buffer);   set

热点排行