hibernate入门

一. 什么是hibernate
 
ORM框架/持久层框架( object reference mapping)

ORM
ORM(Object-Relationship-Mapping):是对象关系映射的意思,它是一种思想,是指将数据库中的每一行数据用对象的形式表现出来。

JPA
JPA(Java-Persistence-API):是Java持久化接口的意思,它是JavaEE关于ORM思想的一套标准接口,仅仅是一套接口,不是具体的实现。
 

 

通过管理对象来改变数据库中的数据, 通过管理对象来操作数据库,Hibernate是一个完完全全的ORM组件,它是完全基于对象来操作数据库中的记录 , 与hibernate类似的框架:mybatis

优势:跨数据库的无缝移植
 
二. 在项目中添加hibernate支持(手动添加)
1、添加hibernate相关依赖 

2、在resource目录下添加hibernate.cfg.xml(核心配置文件)

①添加dtd 约束

展开hibernate的jar,找到下面画红线的文件,点开

 将上面画红线的代码块粘贴到 hibernate.cfg.xml中 

 ②添加Hibernate的配置


<?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">123</property>	
		<property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 配置sql语句生成的规则,配置数据库方言 -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 配置本地事务 -->
		<property name="hibernate.current_session_context_class">thread</property>
		<!-- 配置开发调试所用的配置show_sql,format_sql -->
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
	</session-factory>
</hibernate-configuration>

3、 在开发阶段再创建实体类和实体映射文件(*.hbm.xml)  ,    注:实体必须实现Serializable接口 

 

 

实体映射文件

User.hbm.xml


<?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>
<!-- name:类的全限定名    ,table:指的是类所对应的表 -->
	<class name="com.zking.hibernate.entity.User" table="t_hibernate_user">
	<!-- name:指的是类属性   type: 类属性的类型      column: 对应表的对应列  -->
	<!-- id标签对应的为表示列 -->
		<id name="id" type="java.lang.Integer" column="id">
		<!-- 配置数据库的主键生成策略 -->
			<generator class="org.hibernate.id.IncrementGenerator"></generator>
		</id>
		<!-- name:指的是类属性   type: 类属性的类型      column: 对应表的对应列  -->
		<property name="user_name" type="java.lang.String" column="user_name"></property>
		<property name="user_pwd" type="java.lang.String" column="user_pwd"></property>
		<property name="real_name" type="java.lang.String" column="real_name"></property>
		<property name="sex" type="java.lang.String" column="sex"></property>
		<property name="birthday" type="java.util.Date" column="birthday"></property>
		<property name="create_datetime" type="java.security.Timestamp" column="create_datetime" insert="false" update="false"></property>
		<property name="remark" type="java.lang.String" column="remark"></property>
	</class>
</hibernate-mapping>

hibernate的核心配置文件中需要配置实体的映射文件 

 三.用法

在这里只写一个main方法进行测试了,在开发中以实际情况为准:

package com.zking.hibernate.test;
 
import java.util.Date;
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
 
import com.zking.hibernate.entity.User;
 
public class Test {
 
	public static void main(String[] args) {
		/*
		 * hibernate使用七步走:
		 * 		1、对hibernate.cfg.xml建模
		 * 		2、通过建模所得到的config文件类,获取所配置的sessionfactory
		 * 		3、获取session会话
		 * 		4、开启事务
		 * 		5、操作数据库
		 * 		6、提交事务
		 * 		7、关闭session会话
		 */
		
		// 由于hibernate已经帮我们封装好了, 建模这一步就不用那么麻烦了, 直接调用它的就行:
		Configuration configure = new Configuration().configure("hibernate.cfg.xml");
		SessionFactory sessionFactory = configure.buildSessionFactory();
		// 这里的session会话可以理解为数据库的connection
		Session session = sessionFactory.openSession();
		
		Transaction transaction = session.beginTransaction();
		
		//5、操作数据库
		
		//这里的1为用户的id
		  User user = session.get(User.class, 1);     //查询单个操作
		 
		
		/* 
		 * user.setReal_name("张老三");                  修改操作
		 */
		/*
		 * User user=new User();                       增加操作
		 * user.setReal_name("王五");
		 * user.setRemark("nhyjcfkdh");
		 * user.setBirthday(new Date());
		 * user.setSex("男");
		 * user.setUser_name("ww");
		 * user.setUser_pwd("123");
		 * session.save(user);
		 */
		/* 
		 * User user=new User();                       删除操作
		 * user.setId(3);
		 * session.delete(user);
		 */
		transaction.commit();
		session.close();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值