hibernate学习①:基本增删改查

一、简介
1、ORM框架/持久层框架
2、 优势:跨数据库的无缝移植

二、在eclipse中添加hibernate支持
1、添加hibernate相关依赖
在这里插入图片描述
说明:创建异常
在这里插入图片描述

出现原因:
    (1) 在myeclipse项目空间中已经存在该项目了,也许在Myeclipse工具中删除了,确没删除他的源文件
解决方法:
    (1)更换其他名称
    (2) 移走或者删除源文件
    
   搭建成功后!
   显示所有包
右键选择build path
在这里插入图片描述
2、在resource目录下添加hibernate.cfg.xml【核心配置文件】
pom.xml添加servlet

<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>javax.servlet-api</artifactId>
	    <version>4.0.1</version>
	    <scope>provided</scope>
	</dependency>

·
并将junit的version改为4.12
在这里插入图片描述

3、添加DTD支持
Window——>XML(XML Catalog)——>User Specified Entries(Add)
在这里插入图片描述
相关数据库
调试相关
4、在开发阶段再创建实体类和实体类映射文件
【实体类必须实现Serializable接口】
实体映射文件一定要加到核心配置文件

hibernate.cfg.xml配置

<!-- 1. 数据库相关 -->
		<property name="connection.username">root</property>
		<property name="connection.password">123</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/db_0927?useUnicode=true&amp;characterEncoding=UTF-8</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

		<!-- 3.配置本地事务(No CurrentSessionContext configured!) -->
		<property name="hibernate.current_session_context_class">thread</property>
		
		<!-- 2. 调试相关 -->
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
  			 
  			 
  		<!--  hibernate需要管理的数据库表对应的实体类映射文件-->
  		<mapping resource="com/zking/one/entity/User.hbm.xml"/>

在这里插入图片描述
三、使用hibernate完成数据库操作
1、读取配置【读取hidernate.cfg.xml文件】
2、创建SessionFactory【通过xml建模得到sessionfactory工厂】
3、打开Session【获取数据库操作的当前会话】
4、开启事务
5、具体的数据操作
6、提交事务
7、关闭Session

package com.zking.one.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.zking.one.entity.User;

public class demo1 {
	public static void main(String[] args) {
		//1..读取hidernate.cfg.xml文件
		Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
		
		//2.通过xml建模得到sessionfactory工厂
		SessionFactory sessionFactory = cfg.buildSessionFactory();
		
		//3..获取数据库操作的当前会话(session)
		Session session = sessionFactory.openSession();
		
		//4.开启事务
		Transaction transaction = session.beginTransaction();
		
		//5.具体的数据库操作
		//==============================================增加
		User user = new User();
//		user.setId(11);自动增长
		user.setUserName("哈哈");
		user.setRealName("撒谎比");
		user.setUserPwd("123123");
		user.setSex("男");
		user.setRemark("嘿嘿嘿额嘿嘿");
		//save 增加语句
		session.save(user);

		//=============================================修改
		User user = new User();
		user.setId(3);
		user.setUserName("嘿嘿");
		user.setRealName("撒谎比");
		user.setUserPwd("123123");
		user.setSex("女");
		user.setRemark("嘿嘿嘿额嘿嘿");
		//修改语句
		session.update(user);


		//================================================查询
		User user = session.get(User.class, 3);
		System.out.println(user.getRealName());
		//========根据id编号进行修改
		user.setUserName("啦啦");


		//=====================================================删除
		User user = new User();
		user.setId(3);
		//删除
		session.delete(user);


//===============================================================================================================



		//6.提交事务
		transaction.commit();
		
		//7.将会话(session)关闭
		session.close();
		
	}

}

·
【说明:
①SessionFactory对象的创建代价很昂贵,它是线程安全的对象,它为所有的应用程序线程所共享。它只创建一次,通常是在应用程序启动的时候,由一个Configuraion的实例来创建
②Session对象的创建代价比较小,是非线程安全的,对于单个请求,单个会话、单个的 工作单元而言,它只被使用一次,然后就丢弃。只有在需要的时候,一个Session对象 才会获取一个JDBC的Connection(或一个Datasource) 对象,因此假若不使用的时候它不消费任何资源。 】

Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作

猜你喜欢

转载自blog.csdn.net/weixin_43163062/article/details/83214732