手动配置Hibernate的使用(小实例)

第一步:创建应用程序后,导入必要的jar包(包括Hiberante必要的jar包和连接的数据库的jdbc包),我连接的sqlserver引入包有以下几个:
手动配置Hibernate的使用(小实例)_第1张图片
这些包哪来的可以参考我的上一篇博客:
http://blog.csdn.net/sun_song520/article/details/50170733
第二步:
开发Hibernate的三种方式:
1. 由Domain object——》mapping——》db(官方推荐的方式)
2. 由DB(数据库)开始,用工具生成mapping和Domain object(使用较多)
3. 由映射文件开始
我使用第二种方式,
首先创建一个数据库,代码如下:
create table employee
(
id int primary key identity(1,1),
name nvarchar(64) not null,
email nvarchar(64) not null,
hiredate date not null
);

其次,开发domain对象,代码如下:

package com.sws.domain;

//建议我们的domain对象的名称就是对应表的首字母大写
//domain对象/javabean/pojo(plain old/ordinary java object)[简单的java对象]
//什么是POJO?一个POJO类有一下特征
//①有一个主键属性,用于唯一标识该对象(这就是为什么hibernate设计者建议要映射的表需要一个主键)
//②有其他的属性
//③有对各个属性的操作的get/set方法
//④属性一般是private修饰
//⑤一定有一个无参的构造函数(用于hibernate框架反射用)
public class Employee {
    private Integer id;
    private String name;
    private String email;
    private java.util.Date hiredate;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    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 java.util.Date getHiredate() {
        return hiredate;
    }
    public void setHiredate(java.util.Date hiredate) {
        this.hiredate = hiredate;
    }
}

然后,配置对象关系映射文件(这里我们手工配置),对象关系映射文件,作用是用于指定domain对象和表的映射关系,该文件的取名有规范:domain对象.hbm.xml,一般放在和domain对象同一个文件夹下(或者是同一个包下面)如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 映射文件需要一个dtd来指定格式 -->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 该文件用于配置domain对象和表的映射关系 -->
<hibernate-mapping package="com.sws.domain">
    <class name="Employee" table="employee">

    <!-- id元素用于指定主键属性 -->
    <id name="id" column="id" type="java.lang.Integer">
    <!-- 该元素用于指定主键值生成策略 hilo native increment sequence uuid-->
    <generator class="increment"></generator>
    </id>
    <!-- <param name="sequence">emp_seq</param> -->
    <!-- 对其他属性还有配置 -->
    <property name="name" type="java.lang.String">
    <column name="name" not-null="true"></column>
    </property>
    <property name="email" type="java.lang.String">
    <column name="email" not-null="true"></column>
    </property>
    <property name="hiredate" type="java.util.Date">
    <column name="hiredate" not-null="true"></column>
    </property>

    </class>
</hibernate-mapping>

最后,手动配置hibernate.cfg.xml文件,该文件用于配置连接数据库的类型,driver、用户名、密码、url…….,同时管理对象关系映射文件,该文件的名称一般不用修改,如下:

<?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>
        <!-- hibernate 设计者,给我们提供了一些常用的配置 -->
        <property name="connection.driver_class">
            com.microsoft.sqlserver.jdbc.SQLServerDriver
        </property>
        <property name="connection.username">
            这里是登录数据库的用户名   
        </property>
        <property name="connection.password">
            这里是登录数据库的密码  
        </property>
        <property name="connection.url">
    jdbc:sqlserver://localhost:1433;DatabaseName=这里是数据库名称
        </property>
<!-- 配置dialect方言,明确告诉hibernate连接的是那种数据库 -->
        <property name="dialect">
        org.hibernate.dialect.SQLServerDialect  </property>
        <!-- 查看对应的sql语句 -->
        <property name="show_sql">true</property>
        <!-- 管理对象映射文件 -->
        <mapping resource="com/sws/domain/Employee.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

下面我们进行测试,我们不使用service直接测试,代码如下:

public static void main(String[] args) {
    //我们使用hibernate完成crud操作(这里我们只见对象不见表)
    //现在我们不用service直接测试
    //①创建Configuration,该对用用于读取hibernate.cfg.xml,并完成初始化
Configuration configuration = new Configuration().configure();
    //②创建一个SessionFactory(这是一个会话工厂,是一个重量级对象)
SessionFactory sessionFactory = configuration.buildSessionFactory();
    //③创建Session相当于jdbc connection(Servlet HttpSession;他不是jsp session)
    Session session = sessionFactory.openSession();
    //④创建一个事物,hibernate的增删查改是针对事物进行的
Transaction transaction = session.beginTransaction();
    //添加一个对象
    Employee employee = new Employee();
    employee.setName("Mr.Sun");
    employee.setEmail("[email protected]");
    employee.setHiredate(new Date());
    //保存对象用sava()相当于insert into......
    session.save(employee);
    //⑤提交事物
    transaction.commit();
    //关闭session
    session.close();
}

测试结果如下:
手动配置Hibernate的使用(小实例)_第2张图片
我们看下数据库里面结果(我插入了两次):
手动配置Hibernate的使用(小实例)_第3张图片

O(∩∩)O哈哈~,经过一番努力,终于会配置了,在这记录一下以便以后查看,也分享给和我一样的菜鸟(当然我相信大多数人是比我优秀的(*^_^*) 嘻嘻……),后面继续努力!

你可能感兴趣的:(sql,Hibernate,server)