zoukankan      html  css  js  c++  java
  • Java-hibernate的映射文件

    Hibernate 需要知道怎样去加载(load)和存储(store)持久化类的对象。这正是 Hibernate 映


    射文件发挥作用的地方。映射文件告诉 Hibernate 它应该访问数据库(database)里面的哪个表


    (table)及应该使用表里面的哪些字段(column)。


    一个映射文件的基本结构看起来像这样:

    如果需要看DTD的配置文件可以到hibernate3.jar文件下的org.hibernate包下面有个hibernate-mapping-3.0.dtd和hibernate-configuration-3.0.dtd文件就是这里的约束

    在 hibernate-mapping 标签(tag)之间, 含有一个 class 元素。所有的持久化实体类(再次声
    明,或许接下来会有依赖类,就是那些次要的实体)都需要一个这样的映射,来把类对象映射到
    SQL 数据库里的表:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.tutorial.domain">

       <!--这里Event是类名,上面的package的路径就是这个类名的包,EVENTS则是对应的表名-->

       <class name="Event" table="EVENTS">

         <!--这里id 标签的name属性是对应的类的一个属性,column是对应的表的主键名-->

             <id name="id" column="EVENT_ID">

                 <!--generator 元素指定标识符的生成策略(也就是标识符值是怎么产生的) native(全局性唯一) increment(自增)-->

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

     <!--这里的写法很多,第一种是将表和类型写在一起,其他的没有写的时候hibernate会自动使用缺省的配置-->

           <property name="date" type="timestamp" column="EVENT_DATE"/>

           <property name="title"/>

     <!--这种写法之名了数据类型,将表的字段单独拿出来成一个标签, 因为表还具有自己的一些属性-->

           <property name="name" type="java.lang.String">
               <column name="name" not-null="true"/>
           </property>


       </class>

    </hibernate-mapping
    >

    为了保存 Hibernate 的配置,我们可以使用一个简单的 hibernate.properties 文件,或者一个
    稍微复杂的 hibernate.cfg.xml,甚至可以完全使用程序来配置 Hibernate。多数用户更喜欢使用
    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="connection.driver_class">com.mysql.jdbc.Driver</property>
    		<!-- 配置DATE的地址 -->
    		<property name="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>
    		<!-- 配置数据库的用户名 -->
    		<property name="connection.username">root</property>
    		<!-- 配置数据库的密码 -->
    		<property name="connection.password">123456</property>
    		<!-- 输出SQL执行语句 -->
    		<property name="show_sql">true</property>
    		<!-- 确定方言 -->
    		<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    		<!-- 能够生成DDL建表语句, -->
    		<property name="hbm2ddl.auto">update</property>
    		<!-- 读取映射的文件 -->
    		<mapping resource="com/sun/domain/Employee.hbm.xml"/>
    		<mapping resource="com/sun/domain/Content.hbm.xml"/>
    </session-factory>
    </hibernate-configuration>
    

      

      

  • 相关阅读:
    Effective Java 第三版——26. 不要使用原始类型
    Effective Java 第三版——25. 将源文件限制为单个顶级类
    Effective Java 第三版——24. 优先考虑静态成员类
    Effective Java 第三版——23. 优先使用类层次而不是标签类
    Effective Java 第三版——22. 接口仅用来定义类型
    Effective Java 第三版——21. 为后代设计接口
    Effective Java 第三版——20. 接口优于抽象类
    Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用
    Effective Java 第三版——18. 组合优于继承
    Effective Java 第三版——17. 最小化可变性
  • 原文地址:https://www.cnblogs.com/sunxun/p/4028386.html
Copyright © 2011-2022 走看看