1、基本使用
1.1引用jar包(因为它不是sun公司的)
hibernate官网下载(点击打开链接),下载时注意版本,不同版本之间可能存在功能不一样的区别
记得数据库驱动jar包
1.2全局配置文件:hibernate.cfg.xml
在java Resources下面创建一个资源文件(右击项目——》source Folder),新建全局配置文件(右击新创建的资源文件——》new——》other——》file——》hibernate.cfg.xml)
它在创建的时候,需要手动创建数据库,所以需要你在写之前先去创建一个数据库
找到方言包(Libraries——》hibernate-core-版本信息——》org.hibernate.dialect——》找对应的方言包)方言决定数据库引擎,数据库引擎决定数据库效率,方言的选择,根据其数据库版本决定
<?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的配置信息 -->
<hibernate-configuration>
<!-- 具体的配置信息: 四本一言 四大基本项:驱动、url、用户名、密码 一大方言:为什么需要方言?因为不同的数据库,sql语句不一样,需要用方言来标记区分
要根据数据库版本进行选择 -->
<session-factory>
<!-- 1、驱动类名全称 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 2、数据库的url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_day1?characterEncoding=UTF-8</property>
<!-- 3、用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 4、密码 -->
<property name="hibernate.connection.password">123</property>
<!-- 5、方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property>
<!-- 标记ddl的操作方式:create:每次都是新建 update:只要表结构没有发生变化,就不会新建,一般实用这种 create-drop: -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 显示自动生成的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="hibernate.format_sql">true</property>
</session-factory>
</hibernate-configuration>
1.3 写出映射类——数据库的表对应的类
package com.tf.domain;
import java.util.Date;
/**
* @author tf
* @time 2017年11月8日
* @version 1.0
* 备注:用户表,映射类代表的是数据库的表
* 注意:get和set的写法要标准,命名要规范
* 命名规则:必须遵守,写错了就会报错
* 命名规范:约束,习惯
*/
public class User {
private int id;
private String username;
private String password;
private Date time;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public User() {
super();
}
}
1.4 写出映射文件:类名.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 2017-11-8 15:54:09 by Hibernate Tools 3.5.0.Final -->
<!-- hibernate的映射文件的配置 -->
<hibernate-mapping>
<!--当前的类的设置
package:包,当前类所在的包
name:当前的类名
table:表名 -->
<class name="com.tf.domain.User" table="tb_user">
<!-- 主键的标记
name:属性名称
column:字段名称,如果省略表示属性和字段名称一样 -->
<id name="id" type="int" column="id">
<!-- 主键生成策略
常用属性
class:标记主键的生成方式
取值:
1、native:移植性较好 ,可以根据数据库的类型自动选择
2、assigned:自定义主键值
3、uuid:随机主键
4、foreign:外键
5、identity:自增,MySQL
6、sequence:自增,Oracle
7、increment:手动自增,每次新增都查询最大的主键值,加1,但是不安全
-->
<generator class="native" />
</id>
<!-- 联合主键,有多个就写多少个 -->
<!-- <composite-id></composite-id> -->
<!-- 属性的设置
name:属性名称
cloumn:字段名称,如果省略表示属性和字段名称一样
length: 数据库的表的字段的长度,字符串类型长度默认255
type:属性的数据库类型,可以省略-->
<property name="username" type="java.lang.String"/>
<property name="password" type="java.lang.String"/>
<property name="time" type="java.util.Date"/>
</class>
</hibernate-mapping>
1.5 将映射文件添加到全局配置中
<?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的配置信息 -->
<hibernate-configuration>
<!-- 具体的配置信息: 四本一言 四大基本项:驱动、url、用户名、密码 一大方言:为什么需要方言?因为不同的数据库,sql语句不一样,需要用方言来标记区分
要根据数据库版本进行选择 -->
<session-factory>
<!-- 1、驱动类名全称 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 2、数据库的url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_day1?characterEncoding=UTF-8</property>
<!-- 3、用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 4、密码 -->
<property name="hibernate.connection.password">123</property>
<!-- 5、方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property>
<!-- 标记ddl的操作方式:create:每次都是新建 update:只要表结构没有发生变化,就不会新建,一般实用这种 create-drop: -->
<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/tf/domain/User.hbm.xml"/> </session-factory>
</hibernate-configuration>
1.6 使用hibernate(使用单元测试)实现对象——》数据的存储
package com.tf.test;
import java.util.Calendar;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.tf.domain.User;
/**
* @author tf
* @time 2017年11月8日
* @version 1.0 备注:测试类, hibernate的使用 注意:
*/
public class MyTest {
// Hibernate的基本使用
@Test
public void test1() {
// 1、创建配置对象
Configuration config = new Configuration().configure();
// 2、创建Session工厂对象
SessionFactory factory = config.buildSessionFactory();
// 3、获取Session对象
Session session = factory.openSession();
// 4、操作数据库
User user = new User();
user.setPassword("123");
user.setUsername("tf");
user.setTime(Calendar.getInstance().getTime());
// 返回的值是主键值
System.out.println("保存" + session.save(user));
// 5、关闭
session.close();
}
}
右击——》Run As ——》JUnit Test
此时,可以查看数据库