美文网首页
Hibernate学习笔记(一)-项目的基本搭建与认识

Hibernate学习笔记(一)-项目的基本搭建与认识

作者: G__yuan | 来源:发表于2019-07-09 18:32 被阅读0次

    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(把对象变成持久对象,但不会同步对象的状态,相当于查一条数据出来,并给此数据加上锁)。

    介绍对象的状态:

    相关文章

      网友评论

          本文标题:Hibernate学习笔记(一)-项目的基本搭建与认识

          本文链接:https://www.haomeiwen.com/subject/huufkctx.html