首先,应用的数据库是mysql数据库;
对象关系的映射是用一个XML文档来说明的。映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等。
下面从一个映射的例子开始讲解映射元素,映射文件的代码如下。
1. <?xml version="1.0"?> 2. <!-- 3. 所有的XML映射文件都需要定义如下所示的DOCTYPE。 4. Hibernate会先在它的类路径(classptah)中搜索DTD文件。 5. 6. --> 7. <!DOCTYPE hibernate-mapping PUBLIC 8. "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 9. "http://hibernate.sourceforge.net/hibernate-mapping- 3.0.dtd"> 10. 11. <!-- 12. hibernate- mapping有几个可选的属性: 13. schema属性指明了这个映射的表所在的schema名称。 14. default-cascade属性指定了默认的级联风格 可取值有 none、 save、update。 15. auto-import属性默认让我们在查询语言中可以使用非全限定名的类名 可取值有 true、false。 16. package属性指定一个包前缀。 17. --> 18. 19. <hibernate-mapping schema="schemaName" default-cascade="none" 20. auto-import="true" package="test"> 21. 22. <!-- 用class元素来定义一个持久化类 --> 23. <class name="People" table="person"> 24. <!-- id 元素定义了属性到数据库表主键字段的映射。--> 25. <id name="id"> 26. <!-- 用来为该持久化类的实例生成唯一的标识 --> 27. <generator class="native"/> 28. </id> 29. <!-- discriminator 识别器 是一种定义继承关系的映射方法--> 30. 31. <discriminator column="subclass" type="character"/> 32. <!-- property 元素为类声明了一个持久化的,JavaBean风格的属性--> 33. <property name="name" type="string"> 34. <column name="name" length="64" not-null="true" /> 35. </property> 36. 37. <property name="sex" 38. not-null="true" 39. update="false"/> 40. 41. <!-- 多对一映射关系--> 42. <many-to-one name="friend" 43. column="friend_id" 44. update="false"/> 45. 46. <!-- 设置关联关系--> 47. 48. <set name="friends" inverse="true" order-by="id"> 49. <key column="friend_id"/> 50. <! —一对多映射--> 51. <one-to-many class="Cat"/> 52. </set> 53. </class> 54. </hibernate- mapping>
组件应用的方法
组件有两种类型,即组件(component)和动态组件(dynamic-component)。在配置文件中,component元素为 子对象的元素与父类对应表的字段建立起映射关系。然后组件可以声明它们自己的属性、组件或者集合。component元素的定义如下所示:
1. <component name="propertyName" class="className" insert="true|false" 2. upate="true|false" access="field|property|ClassName"> 3. 4. <property ...../> 5. <many- to-one .... /> 6. ........ 7. </component>
在这段代码中,name是指属性名,class是类的名字,insert指的是被映射的字段是否出现在SQL的INSERT语句中,upate指出被映射 的字段是否出现在SQL的UPDATE语句中,access指出访问属性的策略。
Hiebernate的基本配置
Hibernate的数据库连接信息是从配置文件中加载的。Hibernate的配置文件有两种形式:一种是XML格式的文件,一种是 properties属性文件。properties形式的配置文件默认文件名是hibernate.properties,一个properties形 式的配置文件内容如下所示:
1. #指定数据库使用的驱动类 2. hibernate.connection.driver_class = com.mysql.jdbc.Driver r 3. 4. # 指定数据库连接串 5. hibernate.connection.url = jdbc:mysql://localhost:3306/db 6. 7. 8. # 指定数据库连接的用户名 9. hibernate.connection.username = user 10. 11. # 指定数据库连接的密码 12. hibernate.connection.password = password 13. 14. # 指定数据库使用的方言 15. hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect 16. 17. # 指定是否打印SQL语句 18. hibernate.show_sql=true
在配置文件中包含了一系列属性的配置,Hibernate将根据这些属性来连接数据库。
在XML格式的配置文件中,除了基本的Hibernate配置信息,还可以指定具体的持久化类的映射文件,这可以避免将持久化类的配置文件硬编码在程序 中。XML格式的配置文件的默认文件名为hibernate.cfg.xml,一个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> # <!-- 显示执行的SQL语句--> # <property name="show_sql">true</property> # # <!-- 连接字符串--> # <property name="connection.url">jdbc:mysql://localhost:3306/数据库名字</property> # # <!-- 连接数据库的用户名--> # <property name="connection.username">root</property> # # <!-- 数据库用户密码--> # <property name="connection.password">root</property> # # <!-- 数据库驱动--> # <property name="connection.driver_class">com.mysql.jdbc.Driver</property> # # <!-- 选择使用的方言--> # <property name="dialect">org.hibernate.dialect.MySQLDialect</property> # # <!-- 映射文件 --> # <mapping resource="com/stuman/domain/Admin.hbm.xml" /> # # <!-- 映射文件--> # <mapping resource="com/stuman/domain/Student.hbm.xml" /> # # </session- factory> # </hibernate-configuration>
properties形式的配置文件和XML格式的配置文件可以同时使用。当同时使用两种类型的配置文件时,XML配置文件中的设置会覆盖 properties配置文件的相同的属性。