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或者评论指出. 本文章只体现过程,仅体现操作流程 ...
随机推荐
- 【第四课】kaggle案例分析四
Evernote Export 比赛题目介绍 facebook想要准确的知道用户登录的地点,从而可以为用户提供更准确的服务 为了比赛,facebook创建了一个虚拟世界地图,地图面积为100km2,其 ...
- DOCKER - POD操作
强制删除 Terminating 的pod kubectl delete -n <namespace> <pod podname> --grace-period=0 --fo ...
- S-HR之时间空间配置
<field name="entrys.bizDate" dataType = "DATE" label="生效日期" year ...
- webstorm汉化后乱码现象解决
本人之前使用的编辑器是sublime,今天换成webstrom,汉化时出现乱码现象,一开始我以为是没安装完整所以重装了好几遍,后来百度后才知道是webstrom字体类型的问题,具体解决方法如图,点击最 ...
- 20170704-WNDR4300uboot help info
Unknown command 'env' - try 'help'ar7240> help? - alias for 'help'base - print or set address off ...
- ssh_整合总结
开场白:首先,我先帮大家整理一下思路 准备: 数据库,表,数据 jar 包准备 Hibernate 基本jar 包 C3p0 数据库连接池 Spring AOP 基本包 Spring Ioc 基本包 ...
- [luoguP2870] [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(后缀数组)
传送门 数据小的话贪心就行. 可以把这个串翻转再接到后面,再求后缀数组,求出 rank 数组就很简单了. ——代码 #include <cstdio> #include <iostr ...
- 20180620关于使用xtrabackup热还原数据库
参看:http://www.cnblogs.com/waynechou/p/xtrabackup_backup.html http://www.cnblogs.com/waynechou/p/xtra ...
- Java和JS MD5加密-附盐值加密demo
JAVA和JS的MD5加密 经过测试:字母和数据好使,中文不好使. 源码如下: ** * 类MD5Util.java的实现描述: * */public class MD5Util { // 获得MD5 ...
- [转]十五天精通WCF——第四天 你一定要明白的通信单元Message
转眼你已经学了三天的wcf了,是不是很好奇wcf在传输层上面到底传递的是个什么鸟毛东西呢???应该有人知道是soap,那soap这叼毛长得是什么 样呢?这一篇我们来揭开答案... 一:soap到底长成 ...