Hibernate基础映射
在说Hibernate映射前,我们先来了解下对象关系映射 ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对这些对象的操作。我们来看一张图 vcHLudjPtcr9vt26zbbUz/PK/b7d1q685LXE07PJ5KOs
在说Hibernate映射前,我们先来了解下对象关系映射 ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对这些对象的操作。我们来看一张图
vcHLudjPtcr9vt26zbbUz/PK/b7d1q685LXE07PJ5KOsv8nS1M2ouf3Ts8nkudjPtdfUtq+y+sn6U1FM0+++5KOs1NrStc7xwt+8rbLjus3K/b7dsuPWrrzks+S1scfFwbqhozwvcD4KPGgyPkhpYmVybmF0ZdOzyeQ8L2gyPgo8cD4gPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20141110/20141110091545138.jpg" alt="\">
Hibernate文件
- 映射类(*.java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。
- 映射文件(*.hbm.xml):它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
- 数据库配置文件(*.properties/*.cfg.xml):它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。
基本映射:
具体看操作
1映射实体类
//默认空构造函数的重要性 public class User { public User() { // TODO Auto-generated constructor stub } public User(String id,String name){ this.id=id; this.name=name; } private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getExprieTime() { return exprieTime; } public void setExprieTime(Date exprieTime) { this.exprieTime = exprieTime; } private String name; private String password; private Date createTime; private Date exprieTime; }
登录后复制
实体类的设计原则:
* 实现无参的默认的构造函数
* 提供一个标识
*建议不要使用final修饰实体类(因为采用load延时加载数据的时候会继承实体类生成代理对象)
*建议为实体类生成getter和setter方法(如果不使用,需要用属性field标识)
2映射文件User.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"> <hibernate-mapping> <!--1、class和table的映射,name属性是实体名,table属性是表名(table可省略,则name即是映射的表名)--> <class name="com.bjpowernode.hibernate.User"> <!-2、主键映射,name属性是实体类的标识符属性,对应table的主键,即用column表示(column同样可省略)--> <id name="id" access="field"> <!--主键生成器,class属性表示生成策略,根据不同的需求选择--> <generator class="uuid"/> </id> <!--3、其他属性的映射 property--> <property name="name" length="40" unique="true" /> <property name="password"/> <property name="createTime"/> <property name="exprieTime"/> <filter name="testFiltere" condition="id < :myid"></filter> </class> </hibernate-mapping>
登录后复制3hibernate.cfg.xml配置文件
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/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://localhost:3306/hibernast_test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">hanhan</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!--打印sql--> <property name="hibernate.show_sql">true</property> <!--在没有表的时候,创建sessionfactroy 时,就会去创建表(update的方式,不删除原有数据)--> <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>
登录后复制Hibernate的主键生成策略种类
手动:Assigned
Hibernate主动:uuid
数据库交互:
需要和数据库交互以生成id的:guid、identity、sequence、native、foreign
说明:需要和数据库交互生成,需要经过一次查询才能生成
Guid,identity:MySQL,SQLserver的生成方式
sequence:Oracle,db2的生成方式,自增序列
native:identity+sequence,跨平台
foreign:只适用基于共享主键的一对一关联映射的时候使用。即一个对象的主键是参照的另一张表的主键生成的。
总结:
Hibernate的基本映射:重点是对主键生成策略的认识,根据不同数据库选择不同的方式,重要理解。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

在SpringBoot项目中集成Hibernate前言Hibernate是一个流行的ORM(对象关系映射)框架,它可以将Java对象映射到数据库表,从而方便地进行持久化操作。在SpringBoot项目中,集成Hibernate可以帮助我们更轻松地进行数据库操作,本文将介绍如何在SpringBoot项目中集成Hibernate,并提供相应的示例。1.引入依赖在pom.xml文件中引入以下依赖:org.springframework.bootspring-boot-starter-data-jpam

PHP是一种广泛使用的开源服务器端脚本语言,它可以处理Web开发中所有的任务。PHP在网页开发中的应用广泛,尤其是在动态数据处理上表现优异,因此被众多开发者喜爱和使用。在本篇文章中,我们将一步步地讲解PHP基础知识,帮助初学者从入门到精通。一、基本语法PHP是一种解释性语言,其代码类似于HTML、CSS和JavaScript。每个PHP语句都以分号;结束,注

什么是JPA?它与JDBC有什么区别?JPA(JavaPersistenceapi)是一个用于对象关系映射(ORM)的标准接口,它允许Java开发者使用熟悉的Java对象来操作数据库,而无需编写直接针对数据库的sql查询。而JDBC(JavaDatabaseConnectivity)是Java用于连接数据库的标准API,它需要开发者使用SQL语句来操作数据库。JPA将JDBC封装起来,为对象-关系映射提供了更方便、更高级别的API,简化了数据访问操作。在JPA中,什么是实体(Entity)?实体

Java是一种面向对象编程语言,它被广泛地应用于软件开发领域。Hibernate是一种流行的Java持久化框架,它提供了一种简单且高效的方式来管理Java对象的持久化。然而,开发过程中经常会遇到Hibernate错误,这些错误可能会导致程序的异常终止或者不稳定。如何处理和避免Hibernate错误成为了Java开发者必须掌握的能力。本文将介绍一些常见的Hib

Hibernate的一对多和多对多Hibernate是一个优秀的ORM框架,它简化了Java应用程序与关系型数据库之间的数据访问。在Hibernate中,我们可以使用一对多和多对多的关系来处理复杂的数据模型。Hibernate的一对多在Hibernate中,一对多关系是指一个实体类对应多个另一个实体类。比如,一个订单(Order)可以对应多个订单项(OrderItem),一个用户(User)可以对应多个订单(Order)。要在Hibernate中实现一对多关系,需要在实体类中定义一个集合属性来存

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。详细介绍:1、实现方式,Hibernate是一个完整的对象/关系映射解决方案,将对象与数据库表进行映射,MyBatis则需要开发者手动编写SQL语句以及ResultMap;2、性能,Hibernate在开发速度上可能比MyBatis快,因为Hibernate简化了DAO层等等。

Hibernate是一个开放源码的ORM框架,它将关系型数据库和Java程序之间的数据映射相互绑定,这样可以使开发人员更方便地访问数据库中的数据。使用Hibernate框架可以大量减少编写SQL语句的工作,提高应用程序的开发效率和可重用性。下面从以下几个方面来介绍Hibernate框架。一、Hibernate框架的优点对象关系映射,隐藏数据库访问细节,使开发

在本文中,我们将看到如何在Hibernate中执行批量插入/更新。每当我们执行一条sql语句时,我们都是通过对数据库进行网络调用来完成的。现在,如果我们必须向数据库表中插入10个条目,那么我们必须进行10次网络调用。相反,我们可以通过使用批处理来优化网络调用。批处理允许我们在单个网络调用中执行一组SQL语句。为了理解和实施这一点,让我们定义我们的实体−@EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)
