Hibernate搭建框架(一)
什么是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搭建框架(一)的更多相关文章
- hibernate 搭建框架
需要用的包 Hibernate的日志记录: * Hibernate日志记录使用了一个slf4j: * SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具 ...
- Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 确实,刚创博客,对于这个陌生的东西还是有些许淡然.这是我的第一篇博文,希望能给你们有帮助,这就是我最大的乐趣! 好了下面进入正题: SS ...
- Struts2+Spring+Hibernate 三大框架的合并集成
这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样. 首先看一 ...
- 初学springMVC搭建框架过程及碰到的问题
刚刚开始学spring框架,因为接了一个网站的项目,想用spring+springMVC+hibernate整合来实现它,现在写下搭建框架的过程及碰到的问题.希望给自己看到也能让大家看到不要踏坑. 一 ...
- Springmvc+Spring+Hibernate搭建方法
Springmvc+Spring+Hibernate搭建方法及example 前面两篇文章,分别介绍了Springmvc和Spring的搭建方法,本文再搭建hibernate,并建立SSH最基本的代码 ...
- Struts,spring,hibernate三大框架的面试
Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...
- Springmvc+Spring+Hibernate搭建方法及实例
Springmvc+Spring+Hibernate搭建方法及实例
- 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建
从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...
- 从零开始搭建框架SSM+Redis+Mysql(一)之摘要
从零开始搭建框架SSM+Redis+Mysql(一)之摘要 本文章为本人实际的操作后的回忆笔记,如果有步骤错漏,希望来信307793969@qq.com或者评论指出. 本文章只体现过程,仅体现操作流程 ...
随机推荐
- 【webpack结合React开发环境配置】React开发环境配置之Webpack结合Babel8.x版本安装的正确姿势(Webpack最新版4.x结合Babel8.x环境配置步骤)
1. 安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org[使用淘宝镜像]2. 初始化package.json文件c ...
- Error: Registry key 'Software\JavaSoft\Java Runtime has value '1.8', but '1.7' is
cmd下输入 java命令时出现该错误: Error: Registry key 'Software\JavaSoft\Java Runtimehas value '1.8', but '1.7' i ...
- 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到.例如,图3-4的环状串 有10种表示: CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等. 在这些表示法中,字典序最小 ...
- namespace的作用及用法
namespace 所谓namespace,是指标识符的可见范围.C++标准库中的所有标识符都被定义在一个名为 std 的namespace 中. 一.<iostream>和<ios ...
- HTML学习笔记之标签进阶
目录 1.框架 2.表单 3.音频 4.视频 5.文档类型 6.头部元素 7.样式 8.脚本 9.实体 1.框架 使用框架允许我们在同一个浏览器窗口中显示多个页面,其中每份 HTML 文档称为一个框架 ...
- Python3 编写登陆接口
题目选自 Alex Python自动化开发之路的题目,我是从C++转学Python的,编写的水平有限,轻喷. 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 首先应该有2个txt文件,包含用户 ...
- Flask - 安装,仪式, 返回, 和 请求
目录 Flask - 第一篇 安装,仪式, 返回, 和 请求 一. Flask 的安装 和 程序员仪式 安装 程序员仪式 二. Flask 的返回值 三. Flask 请求request Flask ...
- Django REST framework - 解析器和渲染器
目录 Django REST framework - 解析器和渲染器 解析器 Django中的数据解析 DRF中的解析器 渲染器 Django REST framework - 解析器和渲染器 解析器 ...
- libcloud代码研究(二)——云服务封装
对Ali OSS和百度云存储的封装 先在libcloud.storage.provider文件中添加Ali OSS provider和Baidu provider,在DRIVERS中添加如下 ...
- Java JVM虚拟机选项Xms/Xmx/PermSize/MaxPermSize(转)
通过JVM的这些选项:Xms/Xmx/PermSize/MaxPermSize可以牵扯出很多问题,比如性能调优等. 说明:以下转载没经过实践. 经验实例(参考): 设置每个线程的堆栈大小.JDK5.0 ...