什么是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. uva-679 Dropping Balls UVA - 679

    题目大意 总共有一个深度为D的满二叉树,I个小球,每个节点具有开关,小球经过节点后节点开关会有变化,初始都关闭,若关闭往左右否则往右走 只需要循环一下每层的情况即可 代码 #include <b ...

  2. (41)Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

    已经好久没有讲一些基础的知识了,这一小节来点简单的,这也是为下节的在Spring Boot中使用多数据源做准备. 从Spring 3.0开始,增加了一种新的途径来配置Bean Definition,这 ...

  3. maven local responsitory 手工新增jar

    1.推荐几个好的 Maven 常用仓库网址:http://mvnrepository.com/http://search.maven.org/http://repository.sonatype.or ...

  4. Javascript中数据与字符串互转(转)

    数组与字符串的相互转化 <script type="text/javascript"> var obj="new1abcdefg".replace( ...

  5. 对于Linux内核tty设备的一点理解

    http://blog.chinaunix.net/uid-7828352-id-3233064.html

  6. dba 和 rdba 转载

    一.  DB(Data block)   A data block is the smallest unit of storage in an Oracle database. Every datab ...

  7. Tomcat类载入器机制(Tomcat源代码解析六)

    要说Tomcat的Classloader机制,我们还得从Bootstrap開始.在BootStrap初始化的时候.调用了org.apache.catalina.startup.Bootstrap#in ...

  8. Android简单调用相机Camera功能,实现打开照相功能

    在最開始接触Android相机功能之前,先来体验一下Android调用系统照相功能吧 核心代码 Intent intent = new Intent(); //调用照相机 intent.setActi ...

  9. Apache OFbiz service engine 源代码解读

    上一篇看完了ofbiz entity engine,这篇再来过一下ofbiz的service engine.service engine层在设计模式的使用上跟entity engine有些相似,最典型 ...

  10. leetcode第一刷_Convert Sorted Array to Binary Search Tree

    晕.竟然另一样的一道题.换成sorted array的话.找到中间位置更加方便了. TreeNode *sortTree(vector<int> &num, int start, ...