夜光带你走进Hibernate(一)

2023-10-12 21:48
文章标签 hibernate 走进 夜光

本文主要是介绍夜光带你走进Hibernate(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

夜光序言:

用力的喜欢想换来的不过是车水马龙中的回眸一瞥。

正文:夜光: Hibernate框架

ORM 规则

ORM,  Object Relation Mapping 对象关系映射

目标:

通过orm(对象关系映射), 可以做到:

a. 不写sql,包对象直接保存到数据库中

b. 不写sql, 从数据库中读取,直接获取的是封装好的对象

ORM是一种思想,或者说是一种规则的定义, 基于orm的应用:

1. hibernate 框架

2. mybatis 框架

3. 自定义一套程序

ORM是一种思想,或者说是一种规则的定义, 基于orm的应用:

1. hibernate 框架

2. mybatis 框架

3. 自定义一套程序

 

Hibernate框架

概念

基于ORM的持久层框架,对jdbc操作进行了封装

Hibernate与具体数据库无关的技术,即可以框数据库平台

 

Hibernate开发环境搭建

Hibernate版本: 3.6版本

整体步骤:

1. 下载源码,引入jar文件

2. 写配置

* hibernate.cfg.xml  主配置

* Users.hbm.xml    映射配置

3. Api

Configuration   

SessionFactory

Transaction

Session

Query

步骤实现:

1. 建库、建表

-- 删除数据库

DROP DATABASE hib_demo;

 

-- 创建数据库

CREATE DATABASE hib_demo DEFAULT CHARACTER SET utf8;

 

-- 建表

CREATE TABLE users(

   id INT PRIMARY KEY AUTO_INCREMENT,

   NAME VARCHAR(20),

   age INT

)

2. 引入hibernate核心jar文件

源码中:

hibernate3.jar   +   required 目录中所有  + jpa  + 数据库驱动包

 

antlr-2.7.6.jar

commons-collections-3.1.jar

dom4j-1.6.1.jar

hibernate-jpa-2.0-api-1.0.0.Final.jar

hibernate3.jar

javassist-3.12.0.GA.jar

jta-1.1.jar

mysql-connector-java-5.1.12-bin.jar

slf4j-api-1.6.1.jar

3. 主配置文件:  hibernate.cfg.xml

<!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.url">jdbc:mysql:///hib_demo</property>

     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

     <property name="hibernate.connection.username">root</property>

     <property name="hibernate.connection.password">root</property>

     <!-- 通过数据库方言,告诉hibernate如何生产sql。 hibernate会根据配置的方言,生产符合当前数据库语言的SQL语句 -->

     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    </session-factory>

</hibernate-configuration>

4.  javabean/ 映射文件

<?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">

 

<!--

通过XML映射,把对象映射到数据库的表中

 -->

<hibernate-mapping package="cn.Genius.a_config">

 

<class name="Users" table="users">

<id name="userId" column="id">

<generator class="native"></generator>

</id>

<property name="userName" column="name"></property>

<property name="age" column="age"></property>

</class>

 

</hibernate-mapping>

 
5.  App

// 测试类

public class App {

 

@Test

// 保存

public void testSave() throws Exception {

 

// 对象

Users users = new Users();

users.setUserName("Genius");

users.setAge(100);

 

// 1. 创建配置管理器对象

Configuration config = new Configuration();

// 2. 加载主配置文件, 默认加载src/hibernate.cfg.xml

config.configure();

// 3. 根据加载的主配置文件,创建对象

SessionFactory sf = config.buildSessionFactory();

// 4. 创建Session对象

Session session = sf.openSession();

// 5. 开启事务

Transaction tx = session.beginTransaction();

 

// --- 保存

session.save(users);

 

// 6. 提交事务/关闭session

tx.commit();

session.close();

 

}

 

@Test

// 获取对象

public void testGet() throws Exception {

 

 

// 1. 创建配置管理器对象

Configuration config = new Configuration();

// 2. 加载主配置文件, 默认加载src/hibernate.cfg.xml

config.configure();

// 3. 根据加载的主配置文件,创建对象

SessionFactory sf = config.buildSessionFactory();

// 4. 创建Session对象

Session session = sf.openSession();

// 5. 开启事务

Transaction tx = session.beginTransaction();

 

// --- 获取 (根据主键查询)

Users users = (Users) session.get(Users.class, 1);

 

System.out.println(users);

 

// 6. 提交事务/关闭session

tx.commit();

session.close();

 

}

}

 

本文原地址:https://blog.csdn.net/weixin_41987706/article/details/89235144

这篇关于夜光带你走进Hibernate(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198691

相关文章

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

org.hibernate.hql.ast.QuerySyntaxException:is not mapped 异常总结

org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [select u from User u where u.userName=:userName and u.password=:password] 上面的异常的抛出主要有几个方面:1、最容易想到的,就是你的from是实体类而不是表名,这个应该大家都知道,注意

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

Hibernate框架中,使用JDBC语法

/*** 调用存储过程* * @param PRONAME* @return*/public CallableStatement citePro(final String PRONAME){Session session = getCurrentSession();CallableStatement pro = session.doReturningWork(new ReturningWork<C

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity

Hibernate插入数据时,报错:org.springframework.dao.DataIntegrityViolationException: could not insert: [cn.itc

在用junit测试:插入数据时,报一下错误: 错误原因: package junit;import org.junit.Test;import cn.itcast.crm.container.ServiceProvinder;import cn.itcast.crm.dao.ISysUserDao;import cn.itcast.crm.domain.SysRole;

Hibernate中自带的连接池!!!

<span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;"><?xml version="1.0" encoding="UTF-8"?></span> <span style="font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC"-//Hibern

【Linux】萌新看过来!一篇文章带你走进Linux世界

🚀个人主页:奋斗的小羊 🚀所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、初识Linux💥1.1 什么是操作系统?💥1.2 各种操作系统对比💥1.3 现代Linux应用💥1.4 Linux常用版本 💥2、Linux 和 Windows 目录结构对比💥2.1 文件系统组织方式💥2.2

spring mvc+hibernate 实现事务管理(全注解版)

为了方便项目变大配置文件变多,用注解代替 *.hbm.xml,<bean id="*dao" class="">,另外用反省实现dao操作,省去每个类一个dao,此处参考了鸵鸟的例子。 实现功能跟http://blog.csdn.net/waiwai4701/article/details/38270721这个项目是一样的,controller和页面就不再写 首先,jar包支持,为了方便