您的位置:首页 > 编程语言 > Java开发

精通Hibernate:Java对象持久化技术详解--学习心得--入门(1)

2006-12-26 22:00 260 查看
 
在Java应用中使用Hibernate包含以下步骤:
1.       创建Hibernate的配置文件。
2.       创建持久化类。
3.       创建对象-关系映射文件。
4.       通过Hibernate API编写访问数据库的代码。
 一、创建Hibernate的配置文件
两种方式:XML格式    &    Java属性文件--:“键=值”形式。
以下为Java属性方式的示范,这种配置文件的默认文件名为:hibernate.properties
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_name=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/SAMPLEDS
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.show_sql=true
二、创建持久化类
持久化类通常都是域模型中的实体域类。符合JavaBean的规范。
PS:
1. Hibernate并不要求持久化类必须实现java.io.Serializable接口;
2. 一般而言,持久化类有一个id属性,用来惟一标识类的每个对象。在面向对象术语中,这个属性被称为对象标识符(OID,Object Identifier);
3. Hibernate要求持久化类必须提供一个不带参数的默认构造方法,在程序运行时,Hibernate运用Java反射机制,调用java.lang.reflect.Constructor.newInstance()方法来构造持久化类的实例。
4. 持久化类的默认构造方法的访问级别必须是public 或 protected 类型。不能为default或private类型
三、创建数据库
四、创建对象-关系映射文件
Hibernate采用XML格式的文件来指定对象和关系数据之间的映射。在运行时,Hibernate将根据这个映射文件来生成各种SQL语句。
hbm.xml文件应把它入在映射class类同一个目录下。
1.         映射文件的文档类型定义(DTD,Document Type Definition)
<!ELEMENT hibernate-mapping(
        meta*,
       import*,
          (class|subclasss|joined-subclass)*,
        query*,
          sql-query*)>

<!ELEMENT class(
        meta*,
          (cache|jcs-chche)?,
          (id|composite-id),
          discriminator?,
          (version|timestamp)?
          (property|many-to-one|one-to-one|component|dynamic-component|any|map|list|        bag|idbag|array|primitive-array)*,
          ((subclass*)|(joined-subclass*))
)>
<hibernate-mapping>元素是对象-关系映射文件的根元素,其他元素必须嵌入在该元素内。
PS:
[align=center]符号[/align]
[align=center]含义[/align]
无符号
该元素在父元素内必须存在且只能存在一次
+
该元素在父元素内必须存在,可以存在一次或者多次
*
该元素在父元素内可以不存在,或者存在一次或者多次

该元素在父元素内可以不存在,或者只存在一次
在映射文件中,父元素中的各种子元素的定义必须符合特定的顺序。
必须先定义<id>子元素,再定义<property>子元素
把Customer持久化类映射到CUSTOMERS表
例程的Customer.hbm.xml文件用于映射Customer类。如果需要映射多个持久化类,那么既可以在同一个映射文件中映射所有的类,也可以为每个类创建单独的映射文件,映射文件和类同名,扩展名为“hbm.xml”。后一种做法更值得推荐,因为在团队开发中,这有利于管理和维护映射文件。
<class>元素指定类和表的映射,它的name属性设定类名,table属性设定表名。以下代码表明和Customer类对应的表为CUSTOMERS表:
<class name=”mypack.Customer” table=”CUSTOMERS”>
如果没有设置<class>元素的table属性,Hibernate将直接以类名作为表名,也就是说在默认情况下,与mypack.Customer类对应的表为Customer表。
<id>子元素设定持久化类的OID和表的主键的映射。
例:<id name=”id” column=”ID” type=”long”>
                 <generator class=”increment” />             // generator子元素指定对象标识符生成器
        </id>
<property>子元素主要包括name,type,column和not-null属性。
name:持久化类的属性的名字;type:指定Hibernate映射类型。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息