Hibernate入门(一)
1.导包
导入Hibernate最基本的包(不要忘记导入数据库驱动包了!)
下载文件名为黄色框框中的名称的压缩包在对应路径下,有个required包下的所有包就是必备的基本包

2.建表
USE TEST;
DROP TABLE IF EXISTS customer; CREATE TABLE customer(
cust_id INT AUTO_INCREMENT PRIMARY KEY,
cust_name VARCHAR(30),
cust_gender VARCHAR(5),
cust_phone VARCHAR(20)
);
3.建实体类
package deep.entity; import java.io.Serializable; /**
* 用户实体类
* @author DeepSleeping
*
*/
public class Customer implements Serializable{ private static final long serialVersionUID = 1L; private int cust_id;
private String cust_name;
private String cust_gender;
private String cust_phone; public int getCust_id() {
return cust_id;
}
public void setCust_id(int cust_id) {
this.cust_id = cust_id;
}
public String getCust_name() {
return cust_name;
}
public void setCust_name(String cust_name) {
this.cust_name = cust_name;
}
public String getCust_gender() {
return cust_gender;
}
public void setCust_gender(String cust_gender) {
this.cust_gender = cust_gender;
}
public String getCust_phone() {
return cust_phone;
}
public void setCust_phone(String cust_phone) {
this.cust_phone = cust_phone;
}
}
4.创建映射文件(Customer.hbm.xml)
①导入dtd文件约束
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
②导入本地dtd文件(这样就会有提示)
1:window --> preferencrs --> xml --> xml catalog --> add
2:location 选择 file system,然后选择你的本地dtd文件。(在下载的压缩包中搜索dtd也能找到)

3:key type 选择uri。
4:key 填入上述步骤中的"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"
③配置
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<!-- 建立类和表的一个映射关系 -->
<!--
class标签:用来建立类和表的映射
*name属性:类中的全路径
*table属性:表名(如果类名和表名是一致的,那么table属性可以省略)
*catalog属性:数据库名称,可以省略
-->
<class name="deep.entity.Customer" table = "customer">
<!-- 建立类中的属性与表中的主键的映射 -->
<!--
id标签:用来建立类中的属性与表中的主键字段对应
*name属性:类中的属性名
*column属性:表中字段名(如果类中的属性名和表中的一致,可以省略)
*length属性:字段的长度
*type属性:类型 Java数据类型,Hibernate数据类型(默认),SQL类型
-->
<id name = "cust_id" column = "cust_id">
<!-- 主键生成策略 -->
<generator class="native"></generator>
</id> <!-- 建立类中的普通属性与表中的字段的映射 -->
<property name="cust_name" column="cust_name"/>
<property name="cust_gender" column="cust_gender"/>
<property name="cust_phone" column="cust_phone"/> </class>
</hibernate-mapping>
5.创建Hibernate的核心配置文件(hibernate.cfg.xml)
在src目录下创建hibernate.cfg.xml文件
与上述步骤一致,导入约束,导入本地
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<?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>
<!-- 必要的配置信息:连接数据库的基本参数 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property> <!-- Hibernate的属性 -->
<!-- Hibernate的方言:作用,根据配置的方言生成相应的SQL语句 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Hibernate显示SQL语句: -->
<property name="hibernate.show_sql">true</property>
<!-- Hibernate格式化SQL语句(不然显示的就是一行,不方便阅读) -->
<property name="hibernate.format_sql">true</property>
<!-- Hibernate的hbm2ddl(数据定义语言:create drop alter ...) 属性 -->
<!--
hbm2ddl.auto的取值
*none: 不用Hibernate自动生成表
*create:每次都会创建一个新的表(测试)
*create-drop:每次都会创建一个新的表,执行程序结束后删除这个表(测试)
*update:如果数据库中有表,使用原来的表,如果没有表,创建一个新表,可以更新表结构
*validate:只会使用原有的表,对映射关系进行校验
-->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- Hibernate加载映射 -->
<mapping resource="deep/entity/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
6.测试
package deep.test; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; import deep.entity.Customer; /**
* 使用Hibernate保存数据
* @author DeepSleeping
*
*/
public class demo { @Test
public void save(){ //1.加载配置文件
Configuration cfg = new Configuration().configure();
//2.创建一个SessionFactory
SessionFactory sessionFactory = cfg.buildSessionFactory();
//3.创建Session对象,Session对象类似Connection
Session session = sessionFactory.openSession(); //4.开启事务
Transaction tx = session.beginTransaction(); //5.执行相关操作
Customer customer = new Customer();
customer.setCust_name("Hibernate测试");
session.save(customer); //6.事务提交
tx.commit();
//7.释放资源
session.close();
} }


Hibernate入门(一)的更多相关文章
- 三大框架之hibernate入门
hibernate入门 1.orm hibernate是一个经典的开源的orm[数据访问中间件]框架 ORM( Object Relation Mapping)对象关 ...
- Hibernate入门案例及增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Hibernate入门案例 增删改
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Hibernate入门6.Hibernate检索方式
Hibernate入门6.Hibernate检索方式 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv Hibernate的整体框架已经 ...
- Hibernate入门5持久化对象关系和批量处理技术
Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...
- Hibernate入门4.核心技能
Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...
- Hibernate入门3.配置映射文件深入
Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...
- 简单的Hibernate入门简介
其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西, ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- hibernate入门之person表
下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...
随机推荐
- Android-Java-普通类与抽象类(覆盖)&方法重载
覆盖都是子类与父类之间 & 接口与实现类之间 才会产生:覆盖 有很多名称,覆盖,复写,重写 都是一个意思: 注意:重载都是方法之间 方法同名 不同参数,就属于重载: 普通类-覆盖: 描述An ...
- 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- Dubbo 源码分析 - 集群容错之 Router
1. 简介 上一篇文章分析了集群容错的第一部分 -- 服务目录 Directory.服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由.上一篇文章关于服务路由相关逻辑没有 ...
- Android开发 - 掌握ConstraintLayout(六)链条(Chains)
本文我们介绍链条(Chains),使用它可以将多个View连接起来,互相约束. 可以创建横向的链条,也可以创建纵向的链条,我们以横向的链条举例: 我们先创建三个按钮: 我们选中三个按钮后在上面点右键创 ...
- Javascript高级编程学习笔记(79)—— 表单(7)选择框脚本
选择框脚本 选择框由<option>和<select>元素创建,为了方便选择框的交互,除了提供表单字段的公有方法之外 HTMLSelectElement 类型还提供下列特有的属 ...
- webpack严格模式!!!忽略
1. babel5 babel: { options: { blacklist: ["useStrict"], // ... }, // ... } 2. babel6 修改.ba ...
- laravel migrate时报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
今天在学习laravel的路由模型绑定时,在按照文档执行php artisan migrate时报错. In Connection.php line 664: SQLSTATE[42000]: Syn ...
- Mybatis3.2不支持Ant通配符TypeAliasesPackage扫描的解决方案
业务场景 业务场景:首先项目进行分布式拆分之后,按照模块再分为为api层和service层,web层. 其中订单业务的实体类放在com.muses.taoshop.item.entity,而用户相关的 ...
- 【app】自动化必备之adb使用
1.1 Adb介绍 adb(android debug bridge)是android sdk自带的一个工具 Adb是用来连接android设备和PC端的桥梁,通过adb工具,用户可以在PC端对手机进 ...
- css笔记详解(1)
css讲解 版权声明 本文原创作者:雨点的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/ 首先在我们学习css之前先来思考一个问题,为什么html标签上不直接 ...