hibernate框架一之基本知识及编写一个基本的项目

来源:互联网 发布:网络络建设总结 编辑:程序博客网 时间:2024/06/06 14:15

session/actionQueue/insertions/elementData是保存对象在session管理器的状态:如果一个对象存在则该对象在这个elementData对象中有值,如果不在session管理器中,则该对象在该elementData对象中没有值

session/persistenceContext/entityEntries/map/table是保存程序中关于数据库中的对象的值,程序查询数据库中对象的内容保存在该对象中
hibernate重配置,我们来看看一个简单的hibernate的配置信息,首先我们应该知道一个hibernate是一个持久层框架,所以需要配置连接数据库信息: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>        <!-- 这里是提供连接数据库URL -->        <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</property>        <!-- 这里编写的是连接数据库的驱动 -->        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!-- 提供连接数据库的账户 -->        <property name="hibernate.connection.username">root</property>        <!-- 提供连接数据库的密码 -->        <property name="hibernate.connection.password">root</property>        <!-- 配置sql的方言:hibernate独有的hql语句:面向对象的数据库语句,通过这个配置转化为相应的底层数据库操作。从而实现了跨数据库平台 -->        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>        <!-- 是否显示程序执行的sql语句 -->        <property name="hibernate.show_sql">true</property>        <!-- 是否自动更新数据库 -->        <property name="hibernate.hbm2ddl.auto">update</property>        <!-- 这里配置的是持久层对象,对应的就是数据库的表 -->        <mapping resource="com/xingyao/model/User.hbm.xml"/>    </session-factory></hibernate-configuration>

我们从hibernate.cfg.xml配置文件中看到了,持久层对象User.hbm.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-mapping package="com.xingyao.model">    <class name="User" >        <id name="id" type="java.lang.String">            <generator class="uuid"/>        </id>        <property name="username"  type="java.lang.String"/>        <property name="password"  type="java.lang.String"/>        <property name="createTime"  type="java.util.Date"/>    </class></hibernate-mapping>

——————————————————————————————————————————我们来谈谈这里面涉及到的标签
:这个是配置所有的mapping的信息,也就是数据库物理表,其中package属性是:如果该mapping下有许多class信息,则用这个指定包名,简化下面的的信息
:配置一个bean对象;其中names属性值是:一个bean对象(包名+类名,如果上文配置了package属性则可以不需要配置包名)
:配置一个bean里面的主键信息;name属性值是:配置在该类中那个属性为主键;type属性值是:指定id的类型
:指定该主键的生成策略;class属性值是:指定该主键采用什么生成策略,我这里用的是uuid(由系统自动生成一个32为的世界唯一的字符串)在后面会专门有一章将生成策略
:指定该类的其他属性值信息;name的属性值是:指定该类的属性,type属性值是:指定该属性的类型
这里我们完成了hibernate的相关配置,但是我们来看看User.hbm.xml对应的bean是怎么写的

package com.xingyao.model;import java.util.Date;public class User {    private String id;    private String username;    private String password;    private Date createTime;    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 Date getCreateTime() {        return createTime;    }    public void setCreateTime(Date createTime) {        this.createTime = createTime;    }}

——————————————————————————————————————————这里就是一个基本的Bean代码

下面是怎么根据这个bean,怎么创建一个表

  @Test    public void create_table() {        Configuration configuration = new Configuration().configure();        SchemaExport schemaExport = new SchemaExport(configuration);        schemaExport.create(true, true);    }
原创粉丝点击