Hibernate 使用初记

来源:互联网 发布:虎牙直播 知乎 编辑:程序博客网 时间:2024/05/16 01:34


这几天来都搞hibernate,有时也是很迷惑的,不过过来了之后回头看看就觉得它的基本原理是很简洁的.
简单为美嘛!!


我主要要讲一下映射文件的写法,这个是基础.
我遇到的问题:
一是查询时:


<property name="hibernate.query.factory_class">
            org.hibernate.hql.classic.ClassicQueryTranslatorFactory
        </property>
我是用junit在myeclipse里测试时遇到的,不知为何,先记下.
一定要指定这个工厂方法才可以.


二是一些关于映射文件的问题.
 七七八八的问题,主要把所有的属性都要映射到了,例如
 <class name="" 属性要指向pojo类
class=""  要指向pojo类

一对一关系,一对多(多对一)关系,
级联关系,cascade="all|delete|delete-anlphe|none"
    一对多/一对一关系(首端为一)一般设置cascade="save-update";
    多对一/多对多关系(首端为多)一般设置cascade="none"

fetch="join" 指定预先抓取

一对一关联中,以主键关联,要注意外键的方向.


<hibernate-mapping>
    
<class name="com.cysoft.integrationAdministration.hibernate.hibernate.Assetsinfo" table="assetsinfo" catalog="ia">
        
<id name="id" type="java.lang.String">
            
<column name="Id" length="50" />
            
<generator class="uuid.hex"></generator>
        
</id>
        
        
<many-to-one name="assetstype" 
            class
="com.cysoft.integrationAdministration.hibernate.hibernate.Assetstype"
            fetch
="join"
            cascade
="none">
            
<column name="assetsType_id" length="50" unique="true" />
        
</many-to-one>

        
<one-to-one name="otherinfo" 
        class
="com.cysoft.integrationAdministration.hibernate.hibernate.Otherinfo" 
         fetch
="join"
         cascade
="all">
        
</one-to-one>

        
<one-to-one name="depreciationinfo"
             class
="com.cysoft.integrationAdministration.hibernate.hibernate.Depreciationinfo"
            fetch
="join" cascade="all" />



        
<property name="infoId" type="java.lang.String">
            
<column name="infoId" length="100" not-null="true" />
        
</property>
        
<property name="name" type="java.lang.String">
            
<column name="name" length="50" />
        
</property>
        
<property name="stockDate" type="java.util.Date">
            
<column name="stockDate" length="10" />
        
</property>
    
</class>
</hibernate-mapping>


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    
<class name="com.cysoft.integrationAdministration.hibernate.hibernate.Otherinfo" table="otherinfo" catalog="ia">
        
<id name="id" type="java.lang.String">
            
<column name="Id" length="50" />
            
<generator class="foreign">
                
<param name="property">assetsinfos</param>
            
</generator>
        
</id>
        
<property name="department" type="java.lang.String">
            
<column name="department" length="50" />
        
</property>
        
<property name="keeper" type="java.lang.String">
            
<column name="keeper" length="50" not-null="true" />
        
</property>
        
<property name="booker" type="java.lang.String">
            
<column name="booker" length="50" />
        
</property>
        
<property name="bookDate" type="java.util.Date">
            
<column name="bookDate" length="10" />
        
</property>
        
<property name="remark" type="java.lang.String">
            
<column name="remark" length="65535" />
        
</property>
        
<!--<set name="assetsinfos" inverse="true">
            <key>
                <column name="Id" length="50" not-null="true" />
            </key>
            <one-to-many class="Assetsinfo" />
        </set>
    
-->
        
<one-to-one name="assetsinfos"
        class
="com.cysoft.integrationAdministration.hibernate.hibernate.Assetsinfo"
        constrained
="true"
        
></one-to-one>
    
    
</class>
</hibernate-mapping>

原创粉丝点击