Hibernate是什么,有多少好处,想必查找这类博文的都知道,所以就不多说了。下面是我对Hibernate简单使用的一个小小的总结。与君(主要是刚入门的)共勉吧!

创建的顺序


  • 创建Hibernate的配置文件
  • 创建持久化的类
  • 创建对象-关系的映射文件
  • 通过HibernateAPI编写访问数据库的代码

关于详细的步骤

  • 导入Hibernate必须的jar包(hibernate-release-版本号.Final\lib\required)

  • 然后是导入MySQL的jdbc的驱动(mysql-connector-java-版本号-bin.jar)

  • 导入Junit4的jar包(junit4-版本号.jar)

Eclipse上进行环境的搭建

这里仅仅是将上面提到的那些必须的jar包进行相关的路径的配置。我这里是将Hibernate基础项目所需的jar包建立了一个自己的userlibrary。这样方便以后自己随意的导入。但是应该注意的是今后那些以来的文件的文职千万不要随意的变动了,否则可能会使得eclipse找不到。还有Mysql的JDBC的jar千万不要忘记了。另外Junit作为一个调试的使用也是必不可少的。

创建配置文件

  • 步骤一:当Hibernate-tools 没有自动生成配置文件必须的dtd文档的时候,我们需要手动的进行添加。比如

    hibernate-release-4.2.4.Final\project\hibernate-core\src\main\resources\org\hibernate\hibernate-mapping-3.0.dtd
    

    在项目的src目录上点击鼠标右键,然后使用hibernate插件,点击Hibernate Configuration File(cfg.xml)即可。选择默认的就可以了。

  • 步骤二:创建Hibernate的配置文件:

    只要是连接过MySQL数据库,都是知道这些个字段的含义的,不再过多的叙述咯。

    <property name="connection.username">root</property>
    <property name="connection.password">mysql</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>
    <property name="connection.dialect">org.hibernate.dialect.MySQLDialect</property>
    

创建持久化类

举个简单的小例子咯。如下:

    import java.util.Date;

    /**
     * 学生类,设计原则要遵循javaBean的设计原则
     *
     * 1、共有的类 2、属性私有 3、属性使用setter和getter封装 4、提供龚鸥的不带参数的默认的构造方法
     *
     * @author Administrator
     *
     */
    public class Students {

        private String sname;
        private int sid;
        private Date birthday;
        private String gender;
        private String adress;

        public Students() {
        }

        public String getSname() {
            return sname;
        }

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

        public int getSid() {
            return sid;
        }

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

        public Date getBirthday() {
            return birthday;
        }

        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }

        public String getGender() {
            return gender;
        }

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

        public String getAdress() {
            return adress;
        }

        public void setAdress(String adress) {
            this.adress = adress;
        }

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

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

    }

创建对象关系映射文件

同样使用插件帮助我们生成。在src目录下点击右键,new--others--hibernate,选择Hibernate XML Mapping file(hbm.xml)文件,找到我们要进行映射的学生类,然后选择默认的即可。

然后在刚才创建的hibernate.cfg.xml文件中添加一个mapping标签即可。如下
    <mapping resource="Students.hbm.xml" />

创建自己的测试用的数据库

这里我使用Navacat软件新建了一个字符集为UTF-8的数据库。名称为hibernate.

编写的第一个Hibernate的测试的小例子

- 使用Junit进行测试:
    - @Test注解:表明这是一个测试方法,一般为void的无参的throws异常的方法。
    - @Before注解:表明这是一个初始化方法,用于初始化一些信息。
    - @After注解:表明这是一个释放资源的方法,用于收尾的工作。

点击项目名,右键选择创建一个source folder.作为我们的测试所用。我的为test。然后新建一个测试类就可以了。这里我们需要测试的是我们的Students类,所以创建了一个StudentsTest就行。

编写最后的内容,使用HibernateAPI来操作数据库

可见为如下代码:

    import java.util.Date;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    import org.hibernate.service.ServiceRegistryBuilder;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;

    public class StudentsTest {

        private SessionFactory sessionFactory;
        private Session session;
        private Transaction transaction;

        @Before
        public void init() {

            // 创建配置对象
            Configuration config = new Configuration().configure();
            // 创建服务注册对象
            ServiceRegistry serviceRegister = new ServiceRegistryBuilder().applySettings(config.getProperties())
                    .buildServiceRegistry();
            // 创建会化工厂对象
            sessionFactory = config.buildSessionFactory(serviceRegister);
            // 会话对象
            session = sessionFactory.openSession();
            // 开启事务
            transaction = session.beginTransaction();

        }

        @Test
        public void testSaveStudents() {

            Students s = new Students(1, "张三", "男", new Date(), "DLUT");
            // 保存对象进入数据库
            session.save(s);
        }

        @After
        public void destory() {
            // 先提交事务
            transaction.commit();
            session.close();
            sessionFactory.close();
        }

    }

检验一下,实施的效果吧

我最后在测试方法上点击了一下,发现报错了。是org.hibernate.MappingException: Unknown Entity:Students

然后我就看了看hibernate.cfg.xml文件,发现数据库的一切都是正确的啊。也没错。

就想不明白了,然后查了查网上的相似的错误。也没有发现正确的解决办法,最后灵光一闪,肯定是映射文件出错了。那么到底是哪个呢,就一个一个的排查吧。然后我就找到了错误的根源了,不是Student.hbm.xml的错误,而是hibernate.cfg.xml中忘记了添加mapping的标签。哈哈。这次,又运行了一下,成功了。

效果图如下:



总结

本文适合刚入门的Hibernate童鞋,所以并没有一些很复杂的配置啊,和其他额外的处理啊什么的。就是为了简单。

这里面使用到了Hibernate-tools插件,帮助我们干了不少活。省事也省心了。个人建议安装JBoss的这款,包含了不少的东西呢。

好了,今天就讲到这里吧。第一篇Hibernate的博文,想必将来回头来看,定有一番回忆 :-)

Hibernate初体验及简单错误排除的更多相关文章

  1. Hibernate 初体验

    为什么会产生 Hibernate Mybatis 这类的dao层框架 传统的jdbc 虽然执行速度很快,但是开发效率很低,随着面向对象开发的设计思想,在面向对象编程中 将对象 进行持久化,存入关系型的 ...

  2. hibernate初体验

    简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...

  3. hibernate初使用

    准备工作,安装及配置Hibernate http://zhoualine.iteye.com/blog/1190141 在产生数据库表映射 Java 对象时,我增加了数据库中的两张表分别为Chatlo ...

  4. Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]

    前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...

  5. 全分布式的Hadoop初体验

    背景 之前的时间里对 Hadoop 的使用都是基于学长所搭建起的实验环境的,没有完整的自己部署和维护过,最近抽时间初体验了在集群环境下装机.配置.运行的全过程,梳理总结到本文中. 配置 内存:8G C ...

  6. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  7. Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

    Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...

  8. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  9. K8S Kubernetes 简单介绍 转自 http://time-track.cn/kubernetes-trial.html Kubernetes初体验

    这段时间学习了一下 git jenkins docker  最近也在看  Kubernetes  感觉写得很赞  也是对自己对于K8S 有了进一步得理解  感谢 倪 大神得Blog 也希望看到这篇Bl ...

随机推荐

  1. POJ 2832 How Many Pairs?

    Description You are given an undirected graph G with N vertices and M edges. Each edge has a length. ...

  2. BZOJ1095(动态点分治+堆)

    终于把这个坑填了.. 按重心分治建树,每个点存两个堆,第一个存的是这个点子树中的点到父重心的距离,第二个存的是子节点第一个堆的堆顶,同时有一个全局答案堆,存的是每个点第二个堆的最大值+次大值. 20亿 ...

  3. AQS

    AQS介绍 AQS,即AbstractQueuedSynchronizer, 队列同步器,它是Java并发用来构建锁和其他同步组件的基础框架. AQS的核心思想是基于volatile int stat ...

  4. Vue生命周期-手动挂载理解

    改前端遇到个bug,console能够输出值,但是前端不能显示. 我简直一脸懵逼,vue的问题?网络的问题?浏览器的缓存问题? 公司网络,所以直接排除网络问题. 浏览器缓存,试了下确实一定概率可以显示 ...

  5. pm2进阶使用

    启用集群模式 只需要在启动应用时带上i参数 pm2 start app.js -i max max:意味着PM2将自动检测可用的CPU数量和运行多个进程可以在负载均衡模式(但是不推荐使用) 或者使用j ...

  6. Linux安装JProfiler监控tomcat

    下载JProfiler包wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_2.rpm 安装JPro ...

  7. 31. Next Permutation(中等,搞清楚啥是 next permutation)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  8. github windows pycharm 设置

    Window 上pycharm数据上传到github 在window上操作 1),安装git(百度) 进入git , bin目录执行 git-bash.exe 1)  gengyantao@DESKT ...

  9. Android studio安装和问题

    一.Android studio的安装 [提示]A.以下Android studio2.2.2版本.(也有新版本) B.以下是用Android studio自带的sdk ①双击安装文件进行安装 ②如果 ...

  10. [JCIP笔记](五)JDK并发包

    这一节来讲一讲java.util.concurrent这个包里的一些重要的线程安全有关类. synchronized容器 synchronized容器就是把自己的内部状态封装起来,通过把每一个publ ...