Hibernate 学习笔记一


今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子。期间碰到了两个Exception。

我们在使用hibernate的时候需要引入许多jar包,如果jar包少引入了或者版本老旧就会报错,下面是我遇到的两个Exception ,第一个是因为项目缺少slf4j-api.jar和slf4j-log4j12.jar这两个jar包。第二个是因为缺少log4j.jar这个包。一般这种问题只要百度一下报错就可以找到原因,只要下载相应的包,导入项目就可以解决问题。


**1. Exception in thread "main" java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class **org.slf4j.LoggerFactory

2. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger


我亲测无误的使用到的开发包 点我下载


项目的结构图


运行结果

控制台里可以看到最后一行是执行的sql语句。

数据库中可以看到插入了Jawen112这个雇员。


主要代码和配置


测试后没问题的代码。


test.java

向数据库插入一个Employee对象

package com.vv.view;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.*; import com.vv.domain.Employee;
import com.vv.service.EmpoyeeService; public class test { public static void main(String[] args) {
// TODO Auto-generated method stub //我们使用hibernate完成crud操作[这里我们只见对象不见表]
//现在不使用servcie,直接测试
//1.创建Configuration , 该对象用于读取"hibernate.cfg.xml" 并完成初始化
Configuration configuration=new Configuration().configure("hibernate.cfg.xml");
//2.创建sessionfactory[],这是一个会话工厂,是一个重量级的对象
//后面做成单态,只能有一个
SessionFactory sessionFactory=configuration.buildSessionFactory();
//3.创建Session 相当于jdbc中的connection 一个会话
Session session=sessionFactory.openSession();
//4.对hibernate而言,要求程序员,在进行增加,删除,修改的时候使用事务提交
Transaction transaction=session.beginTransaction(); //添加一个雇员
Employee employee1=new Employee();
employee1.setName("Jawen112");
employee1.setEmail("995625851@qq.com");
employee1.setHirdate(new Date());
//保存
session.save(employee1);//save(employee1) 就是持久化该对象(把对象保存到了数据库中) ->insert into.... [被hibernate封装]
//提交
transaction.commit();
session.close();
}
}

和 Employee 对应的数据库


Employee.java

Employee->雇员类(属性id,年龄,邮箱,入职日期)

package com.vv.domain;

import java.util.Date;

//建议domain对应名称首字母大写
//domain对象 javabean pojo(plain old/ordinary java object) 简单的java对象
public class Employee { private Integer id;
private String name;
private String email;
private Date hirdate; 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 Date getHirdate() {
return hirdate;
}
public void setHirdate(Date hirdate) {
this.hirdate = hirdate;
} }

Emploee.hbm.xml

这里配置domain对象和表的关系映射

<?xml version="1.0" encoding="utf-8"?>
<!-- 映射文件需要dtd来指定格式 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- 该文件用于配置domain对象和表的关系映射 -->
<hibernate-mapping package="com.vv.domain">
<class name="Employee" table="employee">
<!-- id元素用于指定主键属性 -->
<id name="id" column="id" type="java.lang.Integer">
<!-- 该元素用于指定主键值生成策略 hilo native increment sequence uuid-->
<generator class="native"></generator>
</id> <property name="name" type="java.lang.String">
<!--数据库中的列 -->
<column name="name" not-null="false"/>
</property> <property name="email" type="java.lang.String">
<column name="email" not-null="false"/>
</property> <property name="hirdate" type="java.util.Date">
<column name="hirdate" not-null="false"/>
</property> </class>
</hibernate-mapping>

hibernate.cfg.xml

这里配置一些和数据库有关的配置(驱动,用户,密码,url,管理的对象映射文件即Emploee.hbm.xml 等等)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- hibernate 设计者给我们提供了一些常用的配置 -->
<!-- 配置使用的driver -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 配置使用的用户 -->
<property name="connection.username">xiaozhi</property>
<!-- 配置使用的密码 -->
<property name="connection.password">ycJWr9hBmKTb</property>
<!-- 配置使用的url -->
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/vmalogo</property>
<!-- 配置dialect 方言,明确告诉hibernate连接的是哪种数据库 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 显示出sql语句 -->
<property name="show_sql">true</property>
<!-- 指定管理的对象映射文件 -->
<mapping resource="com/vv/domain/Emploee.hbm.xml" /> </session-factory>
</hibernate-configuration>

Hibernate 学习笔记一的更多相关文章

  1. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  2. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  3. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  4. Hibernate学习笔记

    一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...

  5. Hibernate学习笔记(四)

    我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...

  6. Hibernate学习笔记(三)

    我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...

  7. HIbernate学习笔记(一) 了解hibernate并搭建环境建立第一个hello world程序

    Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装,Java程序员可以使用面向对象的编程思维来操纵数据库,它通过对象属性和数据库表字段之间的映射关系,将对象 ...

  8. Hibernate学习笔记-Hibernate关系映射

    1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1( ...

  9. Hibernate学习笔记(1)Hibernate构造

    一 准备工作 首先,我们将创建一个简单的基于控制台(console-based)Hibernate应用. 我们所做的第一件事就是创建我们的开发文件夹.并把所有需要用到的Java件放进去.解压缩从Hib ...

随机推荐

  1. [ubuntu]用ubuntu开发的日子----win7 ubuntu双系统

    小子终于忍不了win7某些蛋疼的设定,看群里好多大牛推荐mac,但资金紧张,只好推而求其次使用ubuntu,但是由于公司工作环境是windows,所以还必须保留windows系统,一次决定双系统. 下 ...

  2. linux指令(一)文件的操作

    ls -i 查看文件的inode号 find ./ inum 1651190 -exec rm  -i {} \; 根据inode号删除文件

  3. 【Mxnet】----1、使用mxnet训练mnist数据集

    使用自己准备的mnist数据集,将0-9的bmp图像分别放到0-9文件夹下,然后用mxnet训练. 1.制作rec数据集 (1).制作list

  4. SQLiteOpenHelper的使用

    一.SQLiteOpenHelper的使用说明: 1. SQLiteOpenHelper时一个抽象类,子类必须实现的方法: *: onCreate(),数据库第一次被创建时调用,在里面可以执行创建表, ...

  5. eclipse通过JDBC连接数据库不成功

    配置时出现以下错误: java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver 则肯定是CLASSPATH设置有问题,也有可能是命令行方式没有重 ...

  6. IE订阅博客

    思来想去,qq邮箱订阅似乎也不是很方便,尝试了下,点击“博客”中的“订阅”,博客竟然被ie订阅了,据介绍,博客中有更新,即时IE不打开,也会看到信息,这不,我来尝试了,RSS真是不试不知道,一试真方便 ...

  7. MySQL数据库的备份与还原

    http://www.cnblogs.com/lql123/p/6090681.html    //安装WordPress 1.备份 密码为:AAAzzz//123 mysqldump -uroot ...

  8. 无废话SharePoint入门教程四[创建SharePoint母版页]

    一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建HTML页面 2.将HTML文件转换为SharePoint母版页 3.在 SPD中修改母版页“PlaceHolderMai ...

  9. 荣品四核4412开发板的USB摄像头问题

    RP4412开发板是荣品电子研发的一款三星四核Exynos4412评估板开发板,支持WIFI+LAN上网.蓝牙4.0.4G上网.500万自动对焦摄像头.GPS.网卡.音频,1080P HDMI音视频同 ...

  10. 【图像处理】【SEED-VPM】2.接口

    —————————————————————————————————————————————————————————————— 对比 ①最好是HDMI: ②分量也是高清的范围,得是比点对点的HDMI低一 ...