JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml

hibernate.cfg.xml配置文件——链接数据库

  hibernate.cfg.xml一定要配置在/src文件目录下

  JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml

    --数据库驱动,url,用户名,密码

    --方言org.hibernate.dialect.MySQL5InnoDBDialect

    --显示并格式化sql语句

    --配置自动生成表

    --orm文件位置

<hibernate-configuration>
<!-- 负责初始化 -->
<session-factory> <!-- 连接数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库地址 -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernatest</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">123456</property>
<!-- 配置数据库的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource= "com/Gary/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>
<?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> <!-- 连接数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库地址 -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernatest</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">123456</property> <!-- 配置数据库的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource= "com/Gary/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>

hibernate.cfg.xml

  显示sql语句

        <!-- 将hibernate生成的SQL语句打印到控制台上 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化hibernate生成的sql语句 -->
<property name="hibernate.format_sql">true</property>

JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml

  自动生成表

        <!-- hibernate自动创建表
create: 自动创建表,每次框架运行都会创建一张新的表,原来的数据将丢失(开发)
create-drop: 自动建表.每次框架运行结束都会将所有表删除.(开发环境中测试使用)
update(推荐): 自动生成表,如果表已经存在,则更新数据,如果表不存在,就会创建一张新的表
validate: 加载hibernate时,验证创建数据库表结构 -->
<property name="hibernate.hbm2ddl.auto">create</property>

 create:
  每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

 create-drop :
  每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。

 update:
  最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。

 validate :
  每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

  orm文件实体User.java和User.hbm.xml两个都放置在domain实体层下

  数据库user表,表中的属性都是string类型,id为主键

JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml

  

  User,java

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone;

  User.hbm.xml

<hibernate-mapping>

   <class name="com.Gary.domain.User" table="user">
<!-- id元素
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
-->
<id name="id" column="id">
<!-- 主键生成策略(手动生成) (最后讲) 5种
identity:主键自增
sequence:oracle中主键生成的策略
native:identity+sequence (hibernate会根据连接的数据库自动选择(identity,sequence))
uuid:产生随机字符串作为主键,主键必须为String assigned:我们要手动去指定
-->
<generator class="assigned"></generator>
</id> <!--
property:除了id之外的普通属性
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
--> <property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="name" column="name"></property>
<property name="email" column="email"></property>
<property name="telephone" column="telephone"></property>
</class> </hibernate-mapping>
package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.Gary.domain.User" table="user">
<!-- id元素
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
-->
<id name="id" column="id">
<!-- 主键生成策略(手动生成) (最后讲) 5种
identity:主键自增
sequence:oracle中主键生成的策略
native:identity+sequence (hibernate会根据连接的数据库自动选择(identity,sequence))
uuid:产生随机字符串作为主键,主键必须为String assigned:我们要手动去指定
-->
<generator class="assigned"></generator>
</id> <!--
property:除了id之外的普通属性
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
--> <property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="name" column="name"></property>
<property name="email" column="email"></property>
<property name="telephone" column="telephone"></property>
</class> </hibernate-mapping>

User.hbm.xml

  uuid: 通用唯一识别码(Universally Unique Identifier)的缩写,让每个人都可以创建不与其它人冲突的UUID,在这样的情况下,就不需考虑数据库创建时的名称重复问题。

上一篇:no-jquery 04 Events


下一篇:oracle数据库升级记(记一次10.2.0.3版本升级到11.2.0.1版本的过程)