Hibernate的配置与简单使用

一、概念

   Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以抛弃在程序中编写SQL语句,随心所欲的使用对象编程思维来操纵数据库。

二、准备工作

  在Eclipse中安装HibernateTools插件:Help -> Install New Software 来进行安装。New -> Other打开的对话框中如果有Hibernate选项则表明安装成功。

三、创建工程

  1.New 一个 Java Project

  2.为Java工程导入jar包:

    • Hibernate核心jar包
    • MySQL的jdbc驱动jar包
    • Junit4的jar包

     我们在windows->preferences->java->build path-user libraries中将三者添加为三个用户类库,方便以后的导入:

    右击Java项目->properties->Java Build Path->Library->add Library->User Library->next->将刚才建好的用户类库全打勾->finish->ok。

  3. 创建Hibernate的配置文档,并编辑:

    右击工程下的src->new->other->Hibernate->Hibernate Configuration File (cfg.xml)->next,next,finish

    src下已经生成了配置文件hibernate.cfg.xml,打开

<hibernate-configuration>
    <session-factory name="">
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  //mysql的jdbc驱动
        <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>  //指明数据库的url地址
        <property name="connection.username">root</property>  //mysql用户名
        <property name="connection.password">****</property>  //密码
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  //方言

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">create</property>

        <mapping resource="Students.hbm.xml" />  //映射文件
    </session-factory>
</hibernate-configuration>

  4. 创建持久化类

    假如我们想往数据库存放一张学生表,包括id,姓名,性别,生日,地址这些字段。那么我们可以创建一个Students类,类中包含了学生的这些属性,我们可以通过“更改Students对象的属性,再传递给数据库”来间接地操纵数据库,这样就避免了使用SQL语句。那么Students这个类我们就称为持久化类。

    在src下创建一个类,命名为Students。持久化类的设计原则要遵循JavaBean的设计原则:

    • 公有的类
    • 私有的属性
    • 无参的公有的构造方法
    • 属性setter/getter封装

    如下:

    

public class Students {

    private int sid;
    private String sname;
    private String gender;
    private Date brithday;
    private String address;

    public Students() {

    }

    public Students(int sid, String sname, String gender, Date brithday, String address) {
        this.sid = sid;
        this.sname = sname;
        this.gender = gender;
        this.brithday = brithday;
        this.address = address;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBrithday() {
        return brithday;
    }

    public void setBrithday(Date brithday) {
        this.brithday = brithday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", brithday=" + brithday
                + ", address=" + address + "]";
    }

}

Students Class

  5. 创建对象-关系映射文件

    右击src->new->other->Hibernate->Hibernater XML Mapping File (hbm.xml)->next,next->点选要持久化的类->finish

    对象-关系映射文件创建完毕,打开可以看到:文件将一个实体类映射称为数据库中的一张表。

    

<hibernate-mapping>
    <class name="Students" table="STUDENTS">
        <id name="sid" type="int">
            <column name="SID" />
            <generator class="assigned" />
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="brithday" type="java.util.Date">
            <column name="BRITHDAY" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
    </class>
</hibernate-mapping>

Students.hbm.xml

    映射文件创建好之后要记得在hibernate配置文件中,添加mapping标签:

    <mapping resource="Students.hbm.xml" />

  6. 在Mysql中创建一个数据库,名称为配置文档中所配置的数据库名称

  7. 通过Hibernate API编写访问数据库的代码,使用Junit进行测试。

    三个注解:

    • @Test :测试方法
    • @Before:初始化方法
    • @After:释放资源

    右击工程名->new->source folder源文件夹->folder name命名为test->finish

    在test文件夹下新建一个类,命名为StudentsTest:

 1 import java.util.Date;
 2 import org.hibernate.Session;
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.Transaction;
 5 import org.hibernate.cfg.Configuration;
 6 import org.hibernate.service.ServiceRegistry;
 7 import org.hibernate.service.ServiceRegistryBuilder;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11
12 //测试类
13 public class StudentsTest {
14
15     private SessionFactory sessionFactory;
16     private Session session;
17     private Transaction transaction;
18
19     @Before
20     public void init() {
21         // 创建配置对象
22         Configuration config = new Configuration().configure();
23         // 创建服务注册对象
24         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties())
25                 .buildServiceRegistry();
26         // 创建会话工厂对象
27         sessionFactory = config.buildSessionFactory(serviceRegistry);
28         // 会话对象
29         session = sessionFactory.openSession();
30         // 开启事务
31         transaction = session.beginTransaction();
32
33     }
34
35     @After
36     public void destroy() {
37         transaction.commit();// 提交事务
38         session.close();// 关闭会话
39         sessionFactory.close();// 关闭会话工厂
40     }
41
42     @Test
43     public void testSaveStudents() {
44         // 生成学生对象
45         Students s = new Students(1, "张三", "男", new Date(), "北京市");
46         // 保存对象进入数据库
47         session.save(s);
48     }
49 }

    测试类创建好之后,右击该类下目录下的testSaveStudents()方法,Run as Junit Test!

    之后我们去相应的数据库里查看,已经有一张students的表生成了:

    

时间: 2024-10-25 23:13:51

Hibernate的配置与简单使用的相关文章

[JavaWeb基础] 005.Hibernate的配置和简单使用

1.Hibernate简介 Hibernate是一个基于Java的开源的持久化中间件,对JDBC做了轻量的封装.采用ORM映射机制,负责实现Java对象和关系数据库之间的映射,把sql语句传给数据库,并且把数据库返回的结果封装成对象.内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API.以对象的形式操作数据,提高开发效率,不用关心数据库种类(换数据库只要修改配值文件). 2.在MyEclipse上创建一个DB broswer 这个东西你可以从Window -> Show

hibernate基本配置与简单增删改查

ORM(Object Relation Mapping)是对象关系映射,是一个思想,它的作用是在关系数据库与对象之间做一个自动映射,将数据库中的表格映射到一个类,也就是持久化类,数据表中每行映射为对象,行中的各个字段映射为对象的属性,这样可以在开发中使用面向对象的思想来操作数据库. 其中hibernate是ORM思想实现的一个持久层框架. 其中有三个主要的内容:1.持久化类(*.java) 2.映射文件(*.hbm.xml) 3.配置文件(*.cfg.xml) 使用Hibernate框架搭建一个

《Java从入门到放弃》入门篇:hibernate基本配置

hibernate是个什么玩意呢?简单点说,就是别人写好的一套访问数据库的东东,底层其实就是JDBC. 使用JDBC就像以前没有电饭煲,我们要自己根据经验,多少人煮多少米,放多少水,用多大的火,煮多长时间,整个过程都需要自己来把控,如果把控得不好,运气好只是把饭煮成粥,运气不好就是一锅炭了. 而使用hibernate就跟使用电饭煲一样,根据刻度放水和米,然后按煮饭还是煮粥,接下来等它"叮~"的一声后,就可以吃了,不说煮得有多好,起码煮出来的是饭,而且是熟的!!! 前者没有多年煮饭经验肯

Hibernate之配置使用

声明:关于讲解Hibernate使用版本的问题,我想了很久,目前最新版是14-10-30的4.3.7.Final ,而我之前做项目使用的是3.3.2,这中间已经迭代还几个版本了.用低版本怕使大家忽略很多新特性,但用新版本,我又不清楚增加了哪些新特性.听了下朋友的建议,他们说既然是面向初学者的,最好还是用最拿手的,一方面自己熟练,有问题可以很好解决,另一方面就是,新特性都是在主体上增加的,并不影响主体,俗话说,师傅领进门,修行在个人.原理讲给你们,新版本的特性你们可以自己了解.所以以后的hiber

使用SpringMVC+mybatis+事务控制+JSON 配置最简单WEB

最近在总结一些项目的基础知识,根据公司最近的一些意向和技术路线,初步整理了一个简单的配置例子     1.使用springmvc代替strutsMVC     2.使用请求json数据串的方式代替传统返回jspview.     3.使用Mybatis代替hibernate 在这些要求的基础上,做了一些尝试.    现在将配置文件整理如下:   目录结构如下:    1.web.xml <?xml version="1.0" encoding="UTF-8"?

Hibernate jar库的简单介绍

1.antlr   --ANTLR (ANother Tool for Language Recognition)语法分析器,它提供一个包括 java,c#和C++在内的语法描述框架 Hibernate利用它实现HQL?到SQL的转换 错误情况: 项目中没有添加antlr-*.jar,hibernate不会执行hql语句    并且会报NoClassDefFoundError: antlr/ANTLRException错误 2.cglib  Hibernate用它来实现PO(project ob

hibernate基本配置

ORM ORM(Object Relation Mapping)对象关系映射.是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中.本质上就是将数据从一种形式转换到另外一种形式. ORM优势 ORM框架可以让我们减少乏味的代码,更加的面向对象的设计,更好的性能,更好的移植性. 创建持久化类 pojo: Plain Ordinary Java Object(无格式的Java对象)Hi

t3用户-角色-权限hibernate经典配置

[java] view plain copy print? 用户-角色-权限hibernate经典配置. [java] view plain copy print? 既然有人问起,我就写下说明吧.在文章中间的配置文件那里.权当回忆一下,也帮助更多人.这是以前学校时写的,没有注释.都是贴的代码笔记.看到的莫要见怪.欢迎学习交流. [java] view plain copy print? [java] view plain copy print? 首先是三个实体类: [java] view pla

Hibernate在配置表映射文件时cascade的类型及意义

当关联双方存在父子关系,就可以在 set 处设定 cascade 为 all-delete-orphan 所谓父子关系,即指由父方控制子方的持久化圣明周期,子方对象必须和一个父方对象关联.如果删除父方对象,应该级联删除所有关联的子方对象:如果一个子方对象不再和一个父方对象关联,应该把这个子方对象删除. all-deleteorphan 的能力: 1. 当保存或更新父方对象时,级联保存或更新所有关联的子方对象,相当于 cascade 为 save-update 2. 当删除父方对象时,级联删除所有