Hibernate映射文件反向生成数据库表

时间:2021-05-20 08:27:30

    注意:类里的属性是boolean类型,生成表到数据库,oracle是number类型,mysql是char类型,而且只识别1/0,插入的数据为true,默认转为1;为false默认转为0;

每个实体的mapping里写的那个类,做增删改查写sql时操纵那个类,哪怕这个类全是方法实现


实例内容()

1:eg:CampusPO.XML(一方)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sudytech.base.asset.server.om">
<class name="CampusPO" table="T_XQ">


<id column="Code" name="code" type="string" length="20">
<generator class="assigned"></generator>
</id>

<property column="Name" name="name" type="string" length="90" />
<property column="Sort" name="sort" type="string" />
<property column="Valid" name="valid" type="java.lang.Boolean" />
<bag name="building2" cascade="all" inverse="true" lazy="false">
<key column="T_XQid"></key>
<one-to-many class="BuildingPO" />
</bag>
<bag name="site2" cascade="all" inverse="true" lazy="false">
<key column="T_XQid"></key>
<one-to-many class="SitePO" />
</bag>

</class>
</hibernate-mapping>


<!--创建xml文件根据工具自动设置的-->

<?xml version="1.0" encoding="UTF-8"?      

<!--表示mapping映射遵循的3.0规范是有效文档,其符合其文档类型定义(DTD)的文档,dtd看作编写xml文件的模板。对于同行业之间的xml数据交,有一个固定的dtd将会方便很多,-- >          
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--  映射文件对应的实体类所在的包路径,加了它可以省去每个class都要写全name,如果不写这一项则<class …>中的name=”CampusPO” 则要在User之前加上具体的包路径-->                                     -->

<hibernate-mapping package="com.sudytech.base.asset.server.om">

<!--table,表名,必须跟数据库一致-->
<class name="CampusPO" table="t_cdsq_campus">

<!--主键必须有-->

<id column="Code" name="code" type="string" length="20">

<!--主键生成策略-->

<generator class="assigned"></generator>
</id>

<!--所有实体类属性和列名可以不一样-->

<property name="code" column="code" />
<property name="name" column="name" />
<property name="sort" column="sort" />
<property name="valid" column="valid" />

<!--关联外键,指的是在关联表里的外键,不是当前类所对应表里的关联键

<bag name="building2" cascade="all" inverse="true" lazy="false">
<key column="T_XQid"></key>

<one-to-many class="BuildingPO" />

</bag>

<!--当前类与set集合的一对多关系-->

<one-to-many class="BuildingPO" />
</bag>



</class>
</hibernate-mapping>

2:eg:BuildingPO.xml(多方)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sudytech.base.asset.server.om">
<class name="BuildingPO" table="T_JZW">
<id column="Code" name="code" type="string" length="20">
<generator class="assigned"></generator>
</id>

<property column="Name" name="name" type="string" length="90" />
<property column="Sort" name="sort" type="string" />
<property column="Valid" name="valid" type="java.lang.Boolean" />            
<bag name="dorm2" cascade="all" inverse="true" >
<key column="T_buildingid"></key>
<one-to-many class="DormPO" />
</bag>
<many-to-one name="campus2" column="T_XQid" lazy="proxy"
class="CampusPO" ></many-to-one>
<many-to-one name="sitePo" column="siteid" lazy="proxy"
class="SitePO"></many-to-one>
</class>
</hibernate-mapping>

3:eg:Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="proxool.pool_alias">proxoolPool</property>
    <property name="proxool.xml">proxool-ora.xml</property>
    <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider
    </property>
    <property name="dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="show_sql">true</property>
    <property name="format_sql">false</property>
    <property name="hibernate.connection.SetBigStringTryClob">true</property>

<!-- base-Asset -->
 <mapping resource="com/sudytech/base/asset/server/om/xml/BuildingPO.hbm.xml"/>
 <mapping resource="com/sudytech/base/asset/server/om/xml/CampusPO.hbm.xml"/>
 <mapping resource="com/sudytech/base/asset/server/om/xml/DormPO.hbm.xml"/>
 <mapping resource="com/sudytech/base/asset/server/om/xml/EquipmentPO.hbm.xml"/>
 <mapping resource="com/sudytech/base/asset/server/om/xml/SitePO.hbm.xml"/>
 <mapping resource="com/sudytech/base/asset/server/om/xml/SiteTypePO.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

<!--必须加这一句 creata -->
    <property name="hbm2ddl.auto">update</property>

4:eg:proxool-ora.xml(oracle数据库用)

<?xml version="1.0" encoding="utf-8"?>
<something-else-entirely>
    <proxool>
        <alias>proxoolPool</alias>
        <driver-url>jdbc:oracle:thin:@127.0.0.1:1521:orcl</driver-url>
        <driver-class>oracle.jdbc.OracleDriver</driver-class>
        <driver-properties>
            <property name="user" value="scott"/>
            <property name="password" value="tiger"/>
        </driver-properties> 
        <maximum-connection-count>300</maximum-connection-count>
        <minimum-connection-count>10</minimum-connection-count>
        <house-keeping-sleep-time>120000</house-keeping-sleep-time>
        <simultaneous-build-throttle>30</simultaneous-build-throttle>
        <prototype-count>10</prototype-count>
        <maximum-active-time>25200000</maximum-active-time>
        <maximum-connection-lifetime>27000000</maximum-connection-lifetime>
    </proxool> 
</something-else-entirely>
 



  </session-factory>
</hibernate-configuration>

5:eg:proxool.xml(mysql数据库用)

<?xml version="1.0" encoding="utf-8"?>
<something-else-entirely>
    <proxool>
        <alias>proxoolPool</alias>
        <driver-url>jdbc:mysql://127.0.0.1:3306/CorePlus3?characterEncoding=UTF-8</driver-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <driver-properties>
            <property name="user" value="root"/>
            <property name="password" value="12344"/>
        </driver-properties>     
        <!--  <driver-url>jdbc:oracle:thin:@localhost:1521:orcl</driver-url>
        <driver-class>oracle.jdbc.OracleDriver</driver-class>
        <driver-properties>
            <property name="user" value="scott"/>
            <property name="password" value="password"/>
        </driver-properties>-->
        <maximum-connection-count>300</maximum-connection-count>
        <minimum-connection-count>10</minimum-connection-count>
        <house-keeping-sleep-time>120000</house-keeping-sleep-time>
        <simultaneous-build-throttle>30</simultaneous-build-throttle>
        <prototype-count>10</prototype-count>
        <maximum-active-time>25200000</maximum-active-time>
        <maximum-connection-lifetime>27000000</maximum-connection-lifetime>
     
    </proxool>

</something-else-entirely>:

6:eg:test

public class test extends HiberSession{

public  static void main(String a[]){

Configuration conf=new Configuration();  
   conf.configure("hibernate.cfg.xml");  
        //创建工厂  
        SessionFactory sf=conf.buildSessionFactory();

运行就行;