Hibernate——创建Hibernate项目

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



此时,可以查看数据库



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值