hibernate.cfg.xml和.hbm.xml

本文介绍了Hibernate作为一款数据持久化组件的基本概念与使用方法。详细讲述了如何通过Hibernate进行对象关系映射,包括配置文件hibernate.cfg.xml的设置、映射文件.hbm.xml的写法等,帮助读者掌握Hibernate的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hibernate数据持久化组件

对象持久化,把数据保存在永久的存储介质中(数据库)
OR/M(object relation mapping)对象关系映射。
POJO类,就是标准的Java Bean。
Hibernate就是一个可以自动的根据xml完成对象关系映射,并持久化到数据库的开源组件。
Hibernate的底层也是有JDBC实现的。
hibernate是通过xml文件的配置,对数据库的底层的方言,以及数据库连接所需的信息,以及连接数据库的驱动。
hibernate的系统配置文件的名字一般叫做hibernate.cfg.xml,一般是映射类名加 .hbm.xml。一般将映射类的xml文件和实体类放在一起。

hibernate.cfg.xml中会设置数据库的连接信息,以及引用的其他文件的文件名,和一些其他的设置,这个文件一般放在项目的根目录下。

相关类和接口:
    SessionFactory是线程安全的重量级的对象,一个应用一个。
    Session是线程不安全的轻量级的对象,由SessionFactory产生,一个线程一个,用完就关。可以是一个事务一个或者是一个view一个。
    Transaction事务对象,由Session对象产生,负责事务的提交和回滚
    Configuration 读Hibernate配置文件,主要是读取其中的数据库配置信息,Configuration可以产生SessionFactory

 

环境配置

hibernate.cfg.xml的写法:
<!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="show_sql">true</property><!--显示sql语句-->
    <property name="format_sql">true</property><!--使显示的sql语句格式化-->
    <property name="dialect">....</property><!--使用的数据库方言信息-->

           <property name="connection.driver_class">....</property>
    <!--使用的数据库的驱动-->
    <property name="connection.url">....</property>
    <!--连接数据库使用的url-->
           <property name="connection.username">...</property>
    <!--连接数据库的用户名-->
    <property name="connection.password">...</property>
    <!--连接数据库的密码-->
    <mapping resource="xxx/xxxx/Xxxxxx.hbm.xml"/>
    <!--引入的映射对象的xml文件的全路径及文件名-->
</session-factory>
</hibernate-configuration>

 

e.g.:

<?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="myeclipse.connection.profile">oracle</property>
 <property name="hibernate.connection.url">
  jdbc:oracle:thin:@localhost:1521:orcl
 </property>
 <property name="hibernate.connection.username">scott</property>
 <property name="hibernate.connection.password">tiger</property>
 <property name="hibernate.connection.driver_class">
  oracle.jdbc.driver.OracleDriver
 </property>
 <property name="hibernate.dialect">
  org.hibernate.dialect.Oracle9Dialect
 </property>
 <!-- JDBC connection pool (use the built-in) -->
 <property name="connection.pool_size">2</property>

 <!-- Echo all executed SQL to stdout -->
 <property name="show_sql">true</property>
 <!-- Drop and re-create the database schema on startup -->
 <!--  property name="hbm2ddl.auto">create</property-->
 <!--property name="hbm2ddl.auto">create</property!-->
 <mapping resource="app/pojo/banji.hbm.xml" />
 <mapping resource="app/pojo/student.hbm.xml" />
</session-factory>
</hibernate-configuration>

 

 

hibernate的映射文件.hbm.xml的写法

<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="XXX.XXX.XXX"><!--映射类所在的包-->
<class name="Xxxxx及需要持久化的对象的xml映射文件的位置x" table="Xxxxx"><!--将类和数据库的表联系起来-->
   <id name="studentId" column="studentId"><!--主键生成策略-->
    <generator class="assigned"/>
    <!--指定主键生成策略为用户指定-->
   </id>
   <property name="XXX" column="XXXX" type="string"/>
   <!--类中的书性和字段之间建立联系-->
   <property name="homeAddress" column="homeAddress"/>
   <property name="schoolAddress" column="schoolAddress"/>
   <property name="brithday" column="brithday" type="data"/>
                <!--在hibernate中其他类型可以自动识别只有Data类型必须指名-->
    </class>   
</hibernate-mapping>

 

 

e.g.:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="app.pojo">
 <class name="Student" table="tb_student" >
  <comment>Users may bid for or sell auction items.</comment>
  <id name="num"> 
             <generator class="assigned" />
  </id>
  <property name="name" />
  <property name="score" />
  <!--  many-to-one name="bj"  column="banji" not-null="true" cascade="all"></many-to-one-->
 </class>
</hibernate-mapping>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值