1、开发步骤:
1、创建Hibernate配置文件 hibernate.cfg.xml
2、创建持久化类
3、创建关系映射文件 *.hbm.xml
4、通过Hibernate API 访问数据库
(1)创建Hibernate配置文件
1、光标在src文件夹,然后File->New->Other->Hibernate Configuration File(cfg.xml)
2、进去 hibernate.cfg.xml配置连接数据库基本信息
3、进去 hibernate.cfg.xml配置hibernate基本信息
4、进去 hibernate.cfg.xml指定关联的 *.hbm.xml文件(目录结构)
(2)创建持久化类
1、就是创建javaBean,或者说创建一个数据模型,在配置关系映射文件之后,hibernate会根据这个类的名字和参数,创建对应的数据表
2、持久化类的要求:①必须有一个无参构造器
②要有标识属性,即用于作为主键的参数
③为字段声明访问方法(get set方法)
④类不能是final
(3)创建关系映射文件
1、光标在持久化类所在包下,然后File->New->Other->Hibernate XML Mapping file(hbm.xml)
2、选择好需要的字段,生成好hbm.xml文件后,进去修改主键生成方式
(4)通过Hibernate API 访问数据库
1、创建SessionFactory对象
2、创建Session对象
3、开始事务
4、执行操作
5、提交事务
6、关闭Session对象
7、关闭SessionFactory对象
2、下载所需jar包:
(1)进入官网http://hibernate.org/orm/ 点解右上角那里的一个绿色按钮(写着Latest stable那个)
(2)会进入最新版本hibernate的页>
(3)第二布的页面往下拉,直到标题为Releases in this series的地方
(4)选择自己需要的版本,然后点Download按钮下载即可
(5)还要自己去找对应数据库驱动jar包
3、Hibernate配置文件: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>
<!-- 配置连接数据库基本信息 -->
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- localhost是地址,如果用默认可以不写localhost,hebernateTEST是数据库名 -->
<property name="connection.url">jdbc:mysql://localhost/hebernateTEST</property>
<!-- 配置hibernate基本信息
1、配置hibernate使用数据库的方言dialect(区分是什么数据库,区分什么版本用)
2、dialect属性值应该写东西,可以去下载的那个hibernate的jar的压缩包里面的project/etc/hibernate.properties中查看
-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 执行操作室是否在控制台打印sql -->
<property name="show_sql">true</property>
<!-- 是否对sql格式化 -->
<property name="format_sql">true</property>
<!-- 指定自动生成数据表的策略 -->
<!--
1、执行程序的时候hibernate自动在数据库生成数据表
2、hbm2ddl.auto有四个create 、 update 、 create-drop 、 validate
①create:每次都生成新的数据表,旧的数据表就会没了
②create-drop:每次都生成新的数据表,当SessionFactory.close()执行,这个表就会删除
③update:数据表或列存在就更新或插入数据,不存在就新建
④validate:和数据库的表对比,如果hbm.xml文件的列在数据表中不存在,则抛出异常并不改变表
-->
<property name="hbm2ddl.auto">update</property>
<!-- 指定关联的 *.hbm.xml文件(目录结构) 每个.hbm.xml对应一个数据表-->
<mapping resource="com/demo/sshtest/Info.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4、持久化类:Info.java
package com.demo.sshtest;
public class Info {
/*
持久化类要求:
1、必须有一个无参构造器
2、要有标识属性
3、为字段声明访问方法(getter setter)
4、类不能是final
*/
public Integer id;
public String name;
public String pswd;
public String description;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPswd() {
return pswd;
}
public void setPswd(String pswd) {
this.pswd = pswd;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Info(){}
public Info(String name, String pswd, String description) {
super();
this.name = name;
this.pswd = pswd;
this.description = description;
}
}
5、关系映射文件:Info.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-4-4 14:05:50 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<!--
Hibernate会根据这个xml耐指定对象和关系数据之间的映射,根据这个映射关系生成对应的sql
class 相当于表
id 相当于字段
column相当于列名
-->
<class name="com.demo.sshtest.Info" table="INFO">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<!-- 指定主键的生成方式 -->
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="pswd" type="java.lang.String">
<column name="PSWD" />
</property>
<property name="description" type="java.lang.String">
<column name="DESCRIPTION" />
</property>
</class>
</hibernate-mapping>
5-1、关系映射文件中,主键generator标签的值的对照表
一般直接用“native”就好了
6、访问数据库逻辑:TestDemo.java
package com.demo.sshtest;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class TestDemo {
public static void test(){
//1、创建SessionFactory对象
// ①线程安全的
// ②构造完成后,就会被赋予特定配置信息(就是configuration.buildSessionFactory完成之后)
// ③构造SessionFactory很耗资源,一个应用一般只初始化一个SessionFactory对象
// ④hibernate4之后增加了ServiceRegistry接口,基于hibernate的配置或服务都先要统一到ServiceRegistry,ServiceRegistry注册后才有效
// ⑤sessionFactory = configuration.buildSessionFactory();//hibernate 4.0之前这样
// ⑥Configuration负责管理Hibernate的配置信息:I、Hibernate运行的底层信息:hibernate.cfg.xml
// II、持久化类与数据表映射关系:*.hbm.xml
SessionFactory sessionFactory = null;
//SessionFactory创建步骤:
//(1)创建Configuration对象:对应hibernate基本配置信息和对象映射信息
Configuration configuration = new Configuration().configure();
//(2)注册hibernate的配置和服务
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
//2、创建Session对象
// ①Session是应用程序与数据库之间交互操作的一个单线程对象
// ②所有持久化对象必须在session管理下才可以进行持久化操作
// ③Session对象生命周期很短
// ④显示执行flush之前,所有持久层操作都缓存在session对象中
// ⑤Session类方法:
// 操作方法:get()、load()、save()、update()、saveOrUpdate()、delete()
// 开启事务:beginTransaction()
// 管理session:isOpen()、flush()、clear()、evict()、close()
Session session = sessionFactory.openSession();
//3、开始事务
// 原子操作,持久层操作都要在事务管理下进行,就是事务不开启的时候,系统是不会对数据库操作的
// 常用方法:commit():提交session实例
// rollback():撤销事务操作
// wasCommitted():检查事务是否提交
Transaction transaction = session.beginTransaction();
//4、执行保存操作
Info info = new Info("name1", "pswd1", "desc1");
session.save(info);
//5、提交事务
transaction.commit();
//6、关闭Session对象
session.close();
//7、关闭SessionFactory对象
sessionFactory.close();
}
public static void main(String[] args) {
/*
1、下载jar包:
(1)进入官网http://hibernate.org/orm/ 点解右上角那里的一个绿色按钮(写着Latest stable那个)
(2)会进入最新版本hibernate的页面http://hibernate.org/orm/releases/版本号/
(3)第二布的页面往下拉,直到标题为Releases in this series的地方
(4)选择自己需要的版本,然后点Download按钮下载即可
(5)还要自己去找对应数据库驱动jar包,我这里用了mysql的
2、开发步骤
(1)创建Hibernate配置文件 -> hibernate.cfg.xml
(2)创建持久化类 -> 类对应表 参数对应字段,即写javaBean
(3)创建对象-关系映射文件 -> *.hbm.xml
(4)通过Hibernate API访问数据库
*/
test();
}
}
7、开发之前需要在eclipse上先好像上一篇文章一样,安装好Hibernate插件先,不然Hibernate配置文件和关系映射文件不能自动生成,会变得好麻烦
8、项目目录
9、运行结果
console的打印中,可以看出,Hibernate首先会去查一次有没有对应的表,如果没有就创建数据表,然后插入对应的数据到表中,然后就能在数据库里面看到对应的表和数据了
10、demo
https://download.csdn.net/download/qq_22778717/10334123