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
此时,可以查看数据库