Hibernate 配置

hibernate.cfg.xml


<?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-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">admin</property>
  <!-- 设置方言 -->
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <!-- 能够在控制台显示sql语句,便于调试 -->
  <property name="show_sql">true</property>
  <!-- 让hibernate 自动建表 -->
  <property name="hibernate.hbm2ddl.auto">update</property>
  <!-- 这里是配置映射文件的路径 -->
  <mapping resource="com/pojo/User.hbm.xml"></mapping>
 </session-factory>
</hibernate-configuration>

create 每次加载hibernate,重新创建数据库表结构
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
validate 加载hibernate时,验证创建数据库表结构


User.hbm.xml
<hibernate-mapping>

 <class name="com.pojo.User" table="user">
          <id name="id" column="user_id">
               <!-- 主键生成策略 -->
               <generator class="native"></generator>
                 </id>
          <property name="name" column="user_name"></property> //name:实体对象属性名    column:表对应的列名
          <property name="age" column="user_age"></property>
 </class>

</hibernate-mapping>



实体对象xml详细说明:
<?xml  version = "1.0" ?>  
<!--  
所有的XML映射文件都需要定义如下所示的DOCTYPE。  
Hibernate会先在它的类路径(classptah)中搜索DTD文件。  
-->  
<!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
<!--  
hibernate-mapping有几个可选的属性:  
schema属性指明了这个映射的表所在的schema名称。  
default-cascade属性指定了默认的级联风格 可取值有 none、save、update。  
auto-import属性默认让我们在查询语言中可以使用非全限定名的类名 可取值有 true、false。  
package属性指定一个包前缀。  
-->  
<hibernate-mapping  schema = "schemaName"   default-cascade = "none"   auto-import = "true"   package = "test" >  
    <!--用class元素来定义一个持久化类 -->  
    <class  name = "People"   table = "person" >  
            <!-- id元素定义了属性到数据库表主键字段的映射。-->  
            <id  name = "id" >  
                <!-- 用来为该持久化类的实例生成唯一的标识 -->  
                <generator  class = "native" />  
            </id>  
    <!-- discriminator识别器 是一种定义继承关系的映射方法-->  
    <discriminator  column = "subclass"   type = "character" />  
            <!-- property元素为类声明了一个持久化的,JavaBean风格的属性-->  
            <property  name = "name"   type = "string" >  
            <column  name = "name"   length = "64"   not-null = "true"  />  
            </property>  
            <property  name = "sex"   not-null = "true"   update = "false" />  
            <!--多对一映射关系-->  
            <many-to-one  name = "friend"   column = "friend_id"    update = "false" />  
            <!--设置关联关系-->  
          <set  name = "friends"   inverse = "true"   order-by = "id" >  
            <key  column = "friend_id" />  
            <!—一对多映射-->  
            <one-to-many  class = "Cat" />  
         </set>  
   </class>  
</hibernate-mapping>



通过实体对象操作数据库:
Configuration config=new Configuration().configure();//读取全局配置文件
SessionFactory factory= config.buildSessionFactory();// 获得sessionFactory
Session  session=factory.openSession(); // 获得一个session 对象
Transaction tran = session.beginTransaction();//// 得到事务对象
Student stu = new Student();
  stu.setStuname("rong");
  stu.setStuclass(12);              //设置一个实体对象
  try {
   session.save(stu);          //=将对象插入数据库   
   tran.commit();         //事务提交
  } catch (Exception e) {
   tran.rollback();    //事务异常回滚
  } finally {
   session.close();  //关闭session 对象
  }


你可能感兴趣的:(java,Hibernate,数据库)