初识Hibernate

hibernate是对jdbc的封装 它是一个开源的DAO层框架.

JDBC 和Hibernate比较谁的执行速度快          JDBC的执行效率高

开发效率                              Hibernate开发效率高,JDBC  

ORM : 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 。从效果上说,它其实是创建了一个可在编程语言里使用的--"虚拟对象数据库"。

对象关系模型、对象关系映射

:一个JAVA对象应数据库的一行记录

:多行记录对应一个集合LIst

ORM: 比如Hibernate通过操作java对象来操作数据库

Hibernate 开发步骤

1.导jar包              1 导包     2add

2.src根目录下编写Hibernate主配置文件:数据库的连接参数等

hibernate.cfg.xml:对hibernate 进行配置 

    /hibernate-demo2/lib/hibernate-core-5.0.7.F

cfg:configuration配置
hibernate.cfg.xml 对hibernate进行配置  
dtd:hibernate-core.jar org.hibernate

3.写实体类:和表一致 

4.hibernate 映射文件:实体映射:写数据库列名和类属性的映射

和 实体类在一个包   类名.hbm.xml

指定主键生成策略  mysql优先使用  identity 
    identity : 自增 
    native:使用数据库默认的                         需要去数据库核对
    assigned:由程序指派   :给Panda的id赋值
    uuid:32位不重复的字符串(全球唯一)
    sequence:序列 Oracle

5.在hibenate.cfg.xml 中引入xxxx.hbm.xml

<mapping resource/>

6.b编码:

  6.1加载主配置文件

  6.2 创建sessionFactory

  6.3获取Session  相当于JDBC中的connection               

  6.4开启事务

  6.5通过Session 进行CRUD                                           

  6.6添加事务控制代码   

  6.7关闭事务

  6.8 关闭Session     

事务控制 :成功 commit             失败 rollback

SessionFactory 一般就一个

一次CRUD对应一个Session                         

 

注意:
xxxx.hbm.xml:中的name一定要类的属性一致   column一定要跟列名一致
hibernate.cfg.xml中的映射文件名不要写错


具体操作过程

通过hebernate实现对数据库的增删改查

1.导jar包  并且add

2.domain文件下创建类实现对数据库的封装     再创建   

3..domain文件下  创建类名.hbm.xml 文件      创建方式  右键  new  other 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>
    <class name="domain.Girl" table="girl">
    <id name="id" column="id" >                            表中的主键
    <generator class="identity">
    </generator>
    </id>
    <property name="name" column="name"></property>                    数据库对应表的属性
    <property name="gender" column="gender"></property>
    <property name="hobby" column="hobby"></property>
    </class>
    </hibernate-mapping>

4.在根目录下创建hibernate.cfg.xml文件    相当于jdbc文件 实现数据的连接    引入映射文件需要写引入映射文件:写全路径包名/ mapping可以写多个   空格会报错 ,检查一下

<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	<property name="hibernate.connection.url">jdbc:mysql:///struts1 </property>     数据库名字
	<property name="hibernate.connection.username">java</property>              用户
	<property name="hibernate.connection.password">java</property>               密码
	<!--在控制台打印SQL  -->
	<property name="show_sql">true</property>
	<!--指定hibernate方言 ,和数据库对应  -->
	<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
	<!--对SQL语句进行格式化  -->
	<property name="hibernate.format_sql">true</property>
	<!-- 引入映射文件:写全路径包名/ mapping可以写多个 -->
	<mapping resource="domain/Girl.hbm.xml"/>          数据库的第一个表对应的文件
	<mapping resource="domain/Panda.hbm.xml"/>         数据库的第二个表对应的文件

	</session-factory>

	</hibernate-configuration>

5.创建util文件 来实现静态代码快     static代码块(静态代码块)只执行一次,保证了SessionFactory的唯一 ,不用每次都重写,只需调用这个文件即可 

package utils;

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

public class HibernateUtil {

	private static Configuration cfg;
	private static SessionFactory sf;
	public  static Transaction tx;
	static{
		cfg=new Configuration().configure();
		sf=cfg.buildSessionFactory();
	}
	public static Session getSession(){
		Session session=null;
		session=sf.openSession();
	 tx=	session.beginTransaction();
		return session;
	}
}



5.创建。class文件 来实现增删改查 

注意 调包是全是hibernate 的包 

以删除为例   特殊点:1需要先查找才能删除 2.session.delete(girl) 在增 改 查 可省略 也能发挥作用  但在删除中只会单方面有效 (运行时正确,其实在数据库中没有完成删除操作)


@Test
public void delete(){
	Session session=HibernateUtil.getSession();
	Girl girl=session.load(Girl.class, 4);
	session.delete(girl);
	HibernateUtil.tx.commit();
	session.close();
	
}




的发谁的大佛放的地辅导费方



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值