1.下图为项目工程目录
2.具体介绍配置文件与编写的类的内容。
(1).配置文件的说明
hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- 该配置文件主要是配置hibernate链接数据库的信息-->
<!-- 该标签是hibernate链接数据库的根标签-->
<hibernate-configuration>
<!-- 配置的是具体链接数据库的信息,如果是多个数据库配置 多个session-factory -->
<session-factory>
<!-- 该配置文件中如何编写链接数据库的配置信息 -->
<!-- 配置方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 配置链接数据库的名称 -->
<property name="hibernate.connection.username">root</property>
<!-- 配置链接数据库的密码 -->
<property name="hibernate.connection.password">123456</property>
<!-- 配置链接mysql数据库的驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 配置链接数据库的url地址-->
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/test</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<!--
//在程序初始化的时候自动建表,程序结束,删除表
<property name="hbm2ddl.auto">create-drop</property>
//在程序初始化时,会检查表中结构和字段等是否有CRUD
<property name="hbm2ddl.auto">update</property>
//在程序初始化时,会检查表结构或字段是否有变化,如果变将抛出异常
<property name="hbm2ddl.auto">validate</property>
-->
<mapping resource="com/gaoyuan/hibernate/domain/User.hbm.xml" />
<!-- <mapping resource="com/cissst/entity/Emp.hbm.xml"/> -->
</session-factory>
</hibernate-configuration>
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>
<class name="com.gaoyuan.hibernate.domain.User" table="User">
<id name="id">
<generator class="native"/>//主键生成器
</id>
<property name="userName"/>
<property name="date"/>
</class>
</hibernate-mapping>
(2).类的说明
Domain类的限制:
<1>.默认的构造函数(必须的)。
<2>.有误意义的标识符id(主键)(可选)
<3>.非final的,对懒加载有影响(可选)
Public class User{
Private int id;
Private String name;
...
}
HibernateUtils类的介绍:
<1>.此类的作用是创建Session
package com.gaoyuan.hibernate.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
private static SessionFactory sessionFactory = null;
static {
//第一步加载配置文件
Configuration cfg = new Configuration();
/*调用下面语句加载配置文件hibernate.cfg.xml,如果此配置文件命名不是默认的(hibernate.cfg.xml)这个名字的话
下面加载配置文件时需要指定名字。用此方法:cfg.configure(document)*/
cfg.configure();
//创建SessionFactory工厂
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
}
其中session是最重要的,介绍下session的几个主要方法:
[if !supportLists]1.[endif]save,persist 保存数据,persist在事务外不会产生insert语句。
[if !supportLists]2.[endif]Delete,删除对象
[if !supportLists]3.[endif]Update,更新对象,如果数据库中没有记录,会出现异常。
[if !supportLists]4.[endif]Get,根据ID查,会立刻访问数据库。
[if !supportLists]5.[endif]Load,根据ID查,(返回的是代理,不会立即访问数据库)。
[if !supportLists]6.[endif]saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用merge你的对象还是脱管的。
[if !supportLists]7.[endif]Lock(把对象变成持久对象,但不会同步对象的状态,相当于查一条数据出来,并给此数据加上锁)。
介绍对象的状态: