什么是hibernate?

  hibernate是一个orm框架,实现了对JDBC的封装。通过xml文件来实现类和表之间的映射,这样就可以使用操作对象的方式来操作数据库。

官网:http://hibernate.org/

这里使用最新的5.3版本,下载到本地。

hibernate框架搭建:

1.导入包 下载后将lib/required文件夹中的jar包以及mysql数据库的驱动jar包(mysql-connector-java-5.1.46.jar)导入到项目中

2.编写主配置文件 创建hibernate.cfg.xml

<?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>
<!--必选5个-->
<!--数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--数据库url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/david2018_db?characterEncoding=UTF-8</property>
<!--数据库连接用户名 -->
<property name="hibernate.connection.username">root</property>
<!--数据库连接密码 -->
<property name="hibernate.connection.password">1234</property>
<!--数据库方言 mysql(limt) sqlserver(top)-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!--可选3个 -->
<!--自动建表:
create:每次都删除新建(数据会丢失)
create-drop:每次运行结束会将表删除
update:如果存在不会生成,不存在新建,如果表修改也会新增列到表中(不会删数据)
validate:校验不自动生成表,每次启动会检查表是否正确 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--输出生成的SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!--对SQL语句进行格式化 -->
<property name="hibernate.format_sql">true</property> <!--映射文件的路径 -->
<mapping resource="com/hibernate/domain/User.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>

3.实体类

package com.hibernate.domain;

public class User {
private int UserId;
private String UserName;
private String PassWord;
private int Age;
private String Sex; public User(){ }
public User(String userName,String password,int age,String sex){
this.UserName = userName;
this.PassWord = password;
this.Age = age;
this.Sex = sex;
} public int getUserId() {
return UserId;
}
public void setUserId(int UserId) {
this.UserId = UserId;
} public String getUserName() {
return UserName;
}
public void setUserName(String UserName) {
this.UserName = UserName;
} public String getPassWord() {
return PassWord;
}
public void setPassWord(String PassWord) {
this.PassWord = PassWord;
}
public int getAge() {
return Age;
}
public void setAge(int Age) {
this.Age = Age;
}
public String getSex() {
return Sex;
}
public void setSex(String Sex) {
this.Sex = Sex;
}
}

4.编写orm元数据 User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<!--映射标签 package:内部类的所在的包名,内部不用写完整类名 -->
<hibernate-mapping package="com.hibernate.domain">
<!--需要设置的映射类:设置该类对应的表 -->
<!--属性:name:类名 table:表名 -->
<!-- name="com.hibernate.domain.User" 因为用了package就不用写完整包名了-->
<class name="User" table="User">
<!--id:主键,name:属性名称,column:字段名称 -->
<id name="UserId" column="UserId">
<!--generator:主键生成策略 class:标记主键如何生成 取值:
1、native:自动增长,会根据当前的数据库自动切换
2、identity:mySQL的自增策略
3、sequence:Oracle的自增标记
4、uuid:32位字符串
5、assigned:自定义字符串
6、foreign:外键
7、increment:自己维护自增关系-->
<generator class="native"/>
</id>
<!--配置属性对应的字段
column(可选):不填就自动走属性名
type(可选)填写该列的类型 不填会自动识别
not-null(可选):默认false可为空
length(可选):长度,默认值数据库类型最大长度-->
<property name="UserName" column="UserName" type="java.lang.String"/>
<property name="PassWord" column="PassWord" type="string"/>
<property name="Age" column="Age"/>
<property name="Sex" column="Sex">
<!--<column name="Sex" sql-type="varchar"></column> string还可以这样定义-->
</property>
</class>
</hibernate-mapping>

5.增删改查

import com.hibernate.domain.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; public class Main {
public static void main(String[] args) {
//加载配置文件 空参默认加载src下的hibernate.cfg.xml
Configuration conf = new Configuration().configure();
// 创建SessionFactory (保存和使用所有配置信息,消耗内存资源非常大,保证在web项目中只创建一个)
SessionFactory sf = conf.buildSessionFactory();
// 创建Session对象 打开一个新的session对象
Session session = sf.openSession(); //sf.getCurrentSession();获得一个现有的session对象 没有就创建 需要在配置文件中进行配置
// 开启事务
Transaction trans = session.beginTransaction(); //新增
session.save(new User("测试", "666666",18,"男")); //查询
User user = session.get(User.class,1);
System.out.println(user.getUserName()); //修改
user.setUserName("武大郎");
session.update(user); //删除
User u = session.get(User.class,2);
session.remove(u); trans.commit();
//trans.rollback(); session.close();
sf.close();
}
}

不用去数据库建表,hibernate会自动根据实体反向生成。

编写工具类

package com.hibernate.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils {
public static final SessionFactory sessionFactory; static {
Configuration conf = new Configuration().configure();
sessionFactory = conf.buildSessionFactory();
}
public static Session openSession(){
Session session = sessionFactory.openSession();
return session;
} public static Session getCurrentSession(){
Session session = sessionFactory.getCurrentSession();
return session;
}
}

测试

    Session session = HibernateUtils.openSession();
session.save(new User("测试", "666666",18,"男"));
session.close();

Hibernate搭建框架(一)的更多相关文章

  1. hibernate 搭建框架

    需要用的包 Hibernate的日志记录: * Hibernate日志记录使用了一个slf4j: * SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具 ...

  2. Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程

    | 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 确实,刚创博客,对于这个陌生的东西还是有些许淡然.这是我的第一篇博文,希望能给你们有帮助,这就是我最大的乐趣! 好了下面进入正题: SS ...

  3. Struts2+Spring+Hibernate 三大框架的合并集成

    这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样.  首先看一 ...

  4. 初学springMVC搭建框架过程及碰到的问题

    刚刚开始学spring框架,因为接了一个网站的项目,想用spring+springMVC+hibernate整合来实现它,现在写下搭建框架的过程及碰到的问题.希望给自己看到也能让大家看到不要踏坑. 一 ...

  5. Springmvc+Spring+Hibernate搭建方法

    Springmvc+Spring+Hibernate搭建方法及example 前面两篇文章,分别介绍了Springmvc和Spring的搭建方法,本文再搭建hibernate,并建立SSH最基本的代码 ...

  6. Struts,spring,hibernate三大框架的面试

    Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...

  7. Springmvc+Spring+Hibernate搭建方法及实例

    Springmvc+Spring+Hibernate搭建方法及实例  

  8. 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建

    从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...

  9. 从零开始搭建框架SSM+Redis+Mysql(一)之摘要

    从零开始搭建框架SSM+Redis+Mysql(一)之摘要 本文章为本人实际的操作后的回忆笔记,如果有步骤错漏,希望来信307793969@qq.com或者评论指出. 本文章只体现过程,仅体现操作流程 ...

随机推荐

  1. 27.7 并行语言集成查询(PLinq)

    static void Main() { ObsoleteMethods(Assembly.Load("mscorlib.dll")); Console.ReadKey(); } ...

  2. ESP、EBP、CALL 指令与局部变量浅析

    概述 函数调用是计算机程序中一个最重要的概念之一,从汇编的角度看,能更加直观地理解函数调用的原理,理解 CALL 指令调用过程中 ESP.EBP 寄存器的作用. 我们先从一段简陋的 C 语言代码说起, ...

  3. java 交集 差集 并集

    package com.wish.datastrustudy; import java.util.HashSet; import java.util.LinkedList; import java.u ...

  4. Luogu P1892 [BOI2003]团伙

    P1892 [BOI2003]团伙 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人 ...

  5. 【[Offer收割]编程练习赛13 B】最大子矩阵(自己的思路)

    [题目链接]:http://hihocoder.com/contest/offers13/problem/2 [题意] [题解] 算出1..250*250这些数字每个数字的所有因子(成对的那种,即x* ...

  6. Package pdftex.def Error: PDF mode expected, but DVI mode detected!

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51646781 在如下使用LaTeX编译 ...

  7. oracle 增量导出/导入

    一.   导出/导入(Export/Import) ----   利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去. ----   1.   ...

  8. Spring MVC 一次简单的 CRUD

    基本环境搭建 1.数据库 和 实体类 的名字相同,实体类 属性名即 数据库 字段名. 2.创建 实体类 对应 dao 类,持久层框架 mybatis 正处于学习中,这里就用原始的 jdbc 操作了. ...

  9. mongodb之配置

    前言 最新版本支持yaml格式的配置文件,只支持空格,不能使用tab 详细配置说明 #系统日志配置 systemLog: destination: file path: /var/log/mongod ...

  10. leetcode 二分法 Pow(x, n)

    Pow(x, n) Total Accepted: 25273 Total Submissions: 97470My Submissions Implement pow(x, n). 题意:求x的n次 ...