首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

【学习札记】Hibernate配置进行数据库操作

2012-09-02 
【学习笔记】Hibernate配置进行数据库操作让我们先来看一下Hibernate配置文件内容:??? ?xml version1.0

【学习笔记】Hibernate配置进行数据库操作

让我们先来看一下Hibernate配置文件内容:

???

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost/mydata</property><property name="connection.username">root</property><property name="connection.password">chengfei</property><!-- JDBC connection pool (use the built-in) --><!--   <property name="connection.pool_size">1</property>--><!-- SQL dialect 方言 将SQL语句翻译成对应的数据库中--><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --><!--<property name="current_session_context_class">thread</property>--><!-- Disable the second-level cache  --><property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property><!-- Echo all executed SQL to stdout //回应所有的执行SQL语句--><property name="show_sql">true</property><!-- Drop and re-create the database schema on startup //是否自动生成建表语句 --><property name="hbm2ddl.auto">validate</property><mapping style="">该参数定义了应该采用哪个org.hibernate.context.CurrentSessionContext实现。

??? 具体的作用还未体验到……跳过

??????? <!-- Disable the second-level cache? -->
??????? <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

??? 配置二级缓存,同样未深入研究,待述……

??????? <!-- Echo all executed SQL to stdout -->
??????? <property name="show_sql">true</property>

??? 这个配置很关键,是否响应所有被执行的SQL语句。默认为true,即将执行成功的SQL语句输出到控制台上。

??????? <!-- Drop and re-create the database schema on startup -->
??????? <property name="hbm2ddl.auto">update</property>

??? hbm2ddl,在SessionFactory创建时,自动检查数据库结构,或者是将数据库scheme(图解)的DDL导入到数据库中。

??? 有四个属性值:create|create-drop|update|validate;

??? create:会自动创建自定义JavaBean的同名物理表。

??? create-drop:除了与create的功能外,不同的在于当我们手动(显示)关闭SessionFactory时,会删除数据中的scheme;

??? validate:不会自动创建表,会提示“Exception in thread "main" org.hibernate.HibernateException: Missing table: 表的名称”;

??? 我的习惯是写update:除了与create具有一样的功能外,并且在表的字段改变时,将会自动进行更新。

??????? <mapping resource="com/cf/model/Student.hbm.xml" />

??? 最后一个则是将该表的数据源映射到哪一个配置文件中!

?????? 如果使用的是Annotation,那映射的部分则要改成:

?????? ?<mapping name="code">package com.cf.model;public class Student {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

?

?? 很简单,就是一个普通的JavaBean,关键的是在下面的xml文件。

??

<?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="com.cf.model"><class name="Student" table="student"><!-- 若实体类的名称与表名相同,table可省略 --><id name="id" column="id"></id><!-- name属性指定的是类的属性GET方法 --><property name="name"></property><property name="age"></property></class></hibernate-mapping>

?? 在对应的JavaBean类的同一级目录中,创建一个名为XXX.hbm.xml的配置文件。XXX与JavaBean的名称相同。

?? 如上面的代码一样。告诉hibernate所要操作的数据库的表所映射的类在哪个包下。

????? class name表示的是JavaBean所对应的名称。而table与column就是具体的表和字段了。(当表名与类名相同时,可省略不写,字段名也如此)。

??

?? 关于hibernate与数据库的操作方式,今天只写了XML文件配置的一种方式。其实当下Annotation的配置方式与XML配置相比,还更流行,今天迟了,下次再与大家分享!?

?

热点排行